0

このコードは、SQL データベースに新しい値を正常に挿入していますが、定数値を挿入した場合のみです。以下のコードで、コードで定数を指定せずに新しい値を挿入したい場合に、
助けが必要です。**(?)**つまり、出力ウィンドウにランダムな値を入力できるようにしたいのですが、それが SQL データベースに挿入されます。

private void InsertInfo()
{
    String strConnection = "Data Source=HP\\SQLEXPRESS;database=MK;Integrated Security=true";

    SqlConnection con = new SqlConnection(strConnection);
    string connetionString = null;
    SqlConnection connection ;
    SqlDataAdapter adapter = new SqlDataAdapter();

    connetionString = @"Data Source=HP\SQLEXPRESS;database=MK;Integrated Security=true";
    connection = new SqlConnection(connetionString);
    string sql = "insert into record (name,marks) **values( ?))";**

    try
    {
        connection.Open();
        adapter.InsertCommand = new SqlCommand(sql, connection);
        adapter.InsertCommand.ExecuteNonQuery();
        MessageBox.Show ("Row inserted !! ");
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.ToString());
    }
}

private void insert_Click(object sender, EventArgs e)
{
    InsertInfo();
}
4

2 に答える 2

2

ここではアダプターを使用する必要はありません。それはあなたを助けていません。ただ:

var name = ...
var marks = ...
using(var conn = new SqlConnection(connectionString))
using(var cmd = conn.CreateCommand()) {
    cmd.CommandText = "insert into record (name, marks) values (@name, @marks)";
    cmd.Parameters.AddWithValue("name", name);
    cmd.Parameters.AddWithValue("marks", marks);
    conn.Open();
    cmd.ExecuteNonQuery();
}

または「dapper」のようなツールを使用:

var name = ...
var marks = ...
using(var conn = new SqlConnection(connectionString)) {
    conn.Open();
    conn.Execute("insert into record (name, marks) values (@name, @marks)",
        new {name, marks});
}
于 2013-02-25T08:24:06.880 に答える
0

それらの '?' パラメータと呼ばれます。私が理解していることから、あなたは挿入にパラメータ化されたクエリを使用したいと思っています。これは、SQLインジェクションの可能性からあなたを救うので良いアプローチです。'?' クエリで歌うことは、を使用しているときに使用されます

OLEDBConnection&Commandオブジェクト。

通常、クエリでパラメータを指定するには、「@」記号を使用します。アダプターは必要ありません。あなただけ

//Bind parameters
// Open your Connection
// Execute your query
// Close connection
// return result

パラメータ化されたクエリRollaの4人の男

MSDN:ASP.NETでSQLインジェクションから保護する方法

于 2013-02-25T08:34:04.173 に答える