を挿入または置換してください。sqlite Sagite insertまたはreplaceコマンドについては、C#
私は挿入物ifが存在しません。 挿入/更新された値は、データテーブルにバインドされたdatagridviewから取得されます。 データテーブルには、主キーであるTID列があります。 Tname、TUtilityなどの他の列もあります。
更新ステートメントの場合TIDには値があり、うまくいきます。しかし、insertステートメントの場合、シリアル番号(TID列)を自動的に入力します。
private void SaveData(DataGridView dgv)
{
using (SQLiteConnection conn = new SQLiteConnection(connString))
{
conn.Open();
dt = dt.GetChanges();
if (dt.Rows.Count > 0)
{
int dtlength = dt.Rows.Count;
DataRow[] arr = new DataRow[dtlength];
dt.Rows.CopyTo(arr, 0);
SQLiteCommand upCmd = new SQLiteCommand(
@"INSERT OR REPLACE
INTO
[Table1](
[TID],
[TName],
[TUtility],
[TType])values(@TID,@Tname,@TUtility,@TType),conn);
for (int i = 0; i < arr.Length; i++)
{
upCmd.Parameters.AddWithValue("@TID", Convert.ToInt32(arr[i]["SNo"]));
upCmd.Parameters.AddWithValue("@TName", arr[i]["Utility"].ToString());
upCmd.Parameters.AddWithValue("@TUtility", arr[i]["Plantname"].ToString());
upCmd.Parameters.AddWithValue("@TType", arr[i]["PlantType"].ToString())
da.UpdateCommand = upCmd;
this.da.UpdateCommand.ExecuteNonQuery();
}
は、どのように私は、ユーザーが新しい行を挿入すると、それは自動的にシリアル番号を入れなければならないような方法で、このTID値を追加する必要があります。 意味:現在DGVに4つのローがあるとします。 DGVは編集モードです(*)。新しい行を追加しています。ユーザーが新しい行に何らかのデータを入力しようとすると、既に入力されたシリアル番号があるはずです。
は私はあなたの問題を理解していますが、INSERT行う際に、なぜちょうどTIDにNULLを入れない場合はわからないあなたに 日