Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
sqlite插入或替换datagridview C#_C#_Sqlite_Datagridview - Fatal编程技术网

sqlite插入或替换datagridview C#

sqlite插入或替换datagridview C#,c#,sqlite,datagridview,C#,Sqlite,Datagridview,关于Sqlite insert或replace命令 如果不存在,我将进行插入。 插入/更新的值来自绑定到datatable的datagridview。 datatable有一个TID列,它是主键。它还有其他栏目,如Tname、TUtility等 FORUPDATE语句TID有一个值,并且运行良好。但是对于insert语句,我希望序列号(即TID列)自动填充 private void SaveData(DataGridView dgv) {

关于Sqlite insert或replace命令

如果不存在,我将进行插入。 插入/更新的值来自绑定到datatable的datagridview。 datatable有一个TID列,它是主键。它还有其他栏目,如Tname、TUtility等

FORUPDATE语句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();
                        }
private void SaveData(DataGridView dgv)
{
使用(SQLiteConnection conn=newsqliteconnection(connString))
{
conn.Open();
dt=dt.GetChanges();
如果(dt.Rows.Count>0)
{
int dtlength=dt.Rows.Count;
DataRow[]arr=新数据行[dtlength];
dt.Rows.CopyTo(arr,0);
SQLITECOMAND upCmd=新SQLITECOMAND(
@“插入或替换
进入
[表一](
[工业贸易署],,
[TName],
[辅导],
[TType])值(@TID、@Tname、@tutibility、@TType)、conn);
对于(int i=0;i
我应该如何添加此TID值,以便在用户插入新行时自动放入序列号。 我的意思是:假设DGV中当前有4行。DGV处于编辑模式(*)。我正在添加新行。一旦用户尝试在新行中输入一些数据,应该已经填充了序列号

         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();
                        }
多谢各位
Sun

我不确定是否理解您的问题,但为什么不在插入时为TID设置NULL。因为TID是主键,sqlite将自动插入值

据它说这是主键

每当您在表的该列中插入NULL时,NULL都是空的 自动转换为大于 该列在表中所有其他行上的最大值,如果为1,则为1 桌子是空的