0

ASP.net/C# のプログラムに接続されている sql データベースにデータを追加するために、コードで小さな問題に直面しています。コードは次のとおりです。

string ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["sqlconnection"].ConnectionString;


            SqlConnection cnn = new SqlConnection(ConnectionString);

            cnn.Open();
            SqlCommand cmd = new SqlCommand();
            cmd.CommandText = "select Id from  TableName";
            cmd.Connection = cnn;
            SqlDataAdapter da = new SqlDataAdapter();
            da.SelectCommand = cmd;
            DataSet ds = new DataSet();
            da.Fill(ds, " TableName ");
            SqlCommandBuilder cb = new SqlCommandBuilder(da);

            DataRow drow =  ds.Tables["TableName"].NewRow();
drow["Id"] = TextBox1.Text;
ds.Tables["TableName "].Rows.Add(drow);

            da.Update(ds, " TableName ");
            string script = @"<script language=""javascript"">
        alert('Information have been Saved Successfully.......!!!!!.');
       </script>;";
            Page.ClientScript.RegisterStartupScript(this.GetType(), "myJScript1", script);

テキスト ボックスに整数値を入力しても、オブジェクトがコード上のインスタンスに設定されていないというエラー メッセージが表示されます。

DataRow drow =  ds.Tables["TableName"].NewRow();

ガイドしてください。ありがとう。

4

1 に答える 1

0

これは、データを挿入する非常に悪い方法のようです。Entity FrameworkまたはLinq2Sqlを見たことがありますか?または、標準のSqlCommandを使用して、CommandTextを自分で設定することもできます。

これらのいずれも、よりクリーンなソリューションを提供します。

例:ADO.NET(SQLiteへの接続)の場合:

var conn = new SQLiteConnection(string.Format(Constants.SQLiteConnectionString, "db.db3"));
conn.Open();
using (SQLiteTransaction trans = conn.BeginTransaction()) {
    using (var cmd = conn.CreateCommand()) {
        cmd.CommandText = "INSERT INTO TableName (Id) VALUES (@Id)";
        cmd.Parameters.AddWithValue("@Id", someTextVariable);
        cmd.ExecuteNonQuery();
    }
}
于 2013-01-15T12:38:34.203 に答える