0

私はSQLを初めて使用します(今日から始めました)。データベースのテーブルに最初の列が自動生成番号としてある場合、データセットのデータをデータベーステーブルに追加する方法、つまり(IDENTITY(1,1))

私はこのようなDataSetを持っています

  name    age    location

   x      30       yyy
   y      20       ppp

データベースのテーブルはこのようなものです

  Id(auto)   name    age    location

  --------  no data  --------------

まず、データベース テーブルからデータセットを埋めています。
最初の列は自動生成されるため、DataSet に新しい値を追加することさえできません。私が言うなら

 dsMainDoctors.Tables[0].Rows.Add( /* first column is autogenerated so I am leaving it*/
                secondColumn,
                thirdColumn,
                fourthColumn,
                FifthColumn);

エラー --> 入力文字列の形式が正しくありません。Doctor_ID 列に格納できませんでした。予想される型は Int32 です。

私がしようとしているコードは次のとおりです:( DataSet で最初の列の値を手動で指定した場合)

        SqlConnection conn = new SqlConnection(strConn);
        SqlCommand cmd = new SqlCommand(strQuery, conn);
        SqlDataAdapter da = new SqlDataAdapter(cmd);
        conn.Open();
        da.Update(ds.Tables[0]);  //ERROR :- Update requires a valid InsertCommand when passed DataRow collection with new rows.
        conn.Close();
        conn.Dispose();
        cmd.Dispose();

 strQuery --> "delete from [dbo].[" + table_name + "]";

質問する前にこれを検索することもできましたが、どのキーワードを使用すればよいかわかりませ
ん。非常に簡単な質問である場合は、コメントで回答してください。

4

2 に答える 2

1

次のコードは、その INSERT コマンドを適切に作成します。また、オブジェクトの破棄が心配な場合は、ステートメントを終了するときusingに呼び出されるため、代わりにステートメントを使用しDisposeてください。

SqlConnection conn = new SqlConnection(strConn);
SqlCommand cmd = new SqlCommand(strQuery, conn);
SqlDataAdapter da = new SqlDataAdapter(cmd);
SqlCommandBuilder builder = new SqlCommandBuilder(da);

using (cmd)
{
    using (conn)
    {
        conn.Open();

        da.InsertCommand = builder.GetInsertCommand();
        da.Update(ds.Tables[0]);  //ERROR :- Update requires a valid InsertCommand when passed DataRow collection with new rows.

        conn.Close();
    }
}

編集

deleteデータベース内のデータを再構築したいだけの場合、それは元の質問が暗示していたものとはまったく異なります。ただし、以下はそれがどれほど簡単かです。

var strQuery = "delete from [dbo].[" + table_name + "]";
SqlConnection conn = new SqlConnection(strConn);
SqlCommand cmd = new SqlCommand(strQuery, conn);
var rowsAffected = cmd.ExecuteNonQuery();

// do something with rowsAffected if you want

// now you can build `insert` statements if you want
// to put more data into it, which you could use the
// previous example for that
于 2012-11-02T11:28:49.943 に答える
1

結果でテーブルを更新するには、 SqlDataAdapterクラスの、、およびプロパティ (SqlCommand オブジェクト)DataTableを構成する必要があります。SelectCommandDeleteCommandInsertCommandUpdateCommand

于 2012-11-02T10:57:37.963 に答える