0

画像パスをデータベースに挿入し、パスを取得したらimgタグで表示します。

できますが、SQLクエリの後に書かなければならないメソッドが見つかりませんでした。

SQLクエリの後に何を書く必要がありますか?

Page_Load私のselectコマンドでは動作します。

 c = new Common(ConfigurationManager.ConnectionStrings["ahapp"]);
    string sql = "select Query";
    string str = "";
    DataTable dt = c.GetDataTable(sql);
    foreach (DataRow item in dt.Rows)
    {
        str += "<img src='" + item["path"].ToString() + "' style='width:100px' />";
    }

    dokList.InnerHtml = str; 

このコードは常に次のように述べています。 ここに画像の説明を入力

 sql ="INSERT INTO DR_OZLUK VALUES(3," + ddlDoktor.SelectedValue + "," + belgeid + ",3," + str + ",1)";
    SqlCommand cmd = new SqlCommand(sql, c);
    cmd.ExecuteNonQuery();
4

6 に答える 6

2

あなたのcオブジェクトは SqlConnection タイプ以外のもののようです。そのコモンクラスとは何ですか?はSqlCommand2 つのパラメーターを取ります。最初の引数は、SQL ステートメントまたはストアド プロシージャの名前の文字列で、もう 1 つの引数は SqlConnection 型のオブジェクトです。

于 2013-04-10T06:50:31.313 に答える
2

insert ステートメントはsql インジェクションに対して脆弱ですが、問題は sql ステートメントとは関係ありません。問題は、 ObjectionでオブジェクトではCommonなくクラスを渡していることです。ConnectionSqlCommand

次のコード スニペットを試してください。

string connStr = "connection string here";
string sqlStatement = "INSERT INTO DR_OZLUK VALUES (3, @val1, @val2, 3, @val3, 1)";
using (SqlConnection conn = new SqlConnection(connStr))
{
    using(SqlCommand comm = new SqlCommand())
    {
        comm.Connection = conn;
        comm.CommandText = sqlStatement;
        comm.CommandType = CommandType.Text;

        comm.Parameters.AddWithValue("@val1", ddlDoktor.SelectedValue);
        comm.Parameters.AddWithValue("@val2", belgeid);
        comm.Parameters.AddWithValue("@val3", str);

        try
        {
            conn.Open();
            comm.ExecuteNonQuery();
        }
        catch(SqlException e)
        {
            // do something with the exception
            // do not hide it
            // e.Message.ToString()
        }
    }
}

適切なコーディングのために

  • using適切なオブジェクトの破棄には useステートメント
  • ブロックを使用try-catchしてオブジェクトを適切に処理する
于 2013-04-10T06:50:37.390 に答える
0

みんなありがとう。解決策を見つけました。このコードを追加してc.GetExecuteNonQuery(sql);、c をグローバルにしました。

于 2013-04-12T07:07:31.393 に答える
0
    Or try this, this sample code is very secure and 100% works any time, you can copy paste it but u must put your connection string and table 

    string connectionStr = "connection string STRING";
    string sqlQuery = "INSERT INTO yourtable VALUES (ID, @pam1, @pam2)";
    ///// Go to Base and execute Query but with trycatch because if you have problem with using connection it will tell you

    try{

    using (SqlConnection conn = new SqlConnection(connStr))
    {
        using(SqlCommand komand = new SqlCommand(conn,sqlQuery)) //command to use connection and Sqlquery

    string fromcontrol = "test"; //this is string just for test

            komand.Parameters.AddWithValue("@pam1", fromcontrol.ToString());
            komand.Parameters.AddWithValue("@val2", fromcontrol.ToString());

                conn.Open();
                komand.ExecuteNonQuery();
            }
            catch(SqlException e)
            {
    //throw your execption to javascript  or response; e.Message.ToString() + "SQL connection or query error"; 
            }

    catch(Exception ex)
    {
    //throw your execption to javascript  or response; e.Message.ToString()+ "system error"; 
    }

finally
{
conn.Close();
conn.Dispose();
}

        }
    }
于 2013-04-11T20:07:54.313 に答える
0

c は接続オブジェクトであるべきだと思います

c = new Common

接続オブジェクトの代わりに c を渡しています。

オブジェクトを作成する SQLCommand の署名は

public SqlCommand(
    string cmdText,
    SqlConnection connection
)

したがって、2番目の引数は接続オブジェクトでなければなりません。それがあなたにエラーを与える理由です。コマンドオブジェクトを作成するためにCommonクラスオブジェクトを渡しています。詳細を取得するためのvisi MSDNリンク: http://msdn.microsoft.com/en-us/library/877h0y3a.aspx

于 2013-04-10T06:52:17.017 に答える
0

c が a でないSqlConnectionか、IDE に別のエラーがあり、貼り付けたエラーと混同しています。エラーを表示すると、VS2010 が壊れることがあります。

于 2013-04-11T11:00:21.323 に答える