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