我得到了这个错误“;查询值的数目和目标字段的数目不相同&”;
本文关键字:目标 字段 查询 错误 | 更新日期: 2023-09-27 18:00:26
我得到了这个错误:
语法错误INSERT INTO语句
这是正确的另一个是SQL对不起
//Server Connection
private void ServerConnect()
{
string ConnString;
ConnString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=PLAN.accdb";
TConn = new OleDbConnection(ConnString);
TConn.Open();
MessageBox.Show("You Are Connected.");
TConn.Close();
}
//ADD MEMOS
private void GetMemoList()
{
string query;
DataSet ds = new DataSet();
query = "SELECT MEMO_ID,DATE,TIME,MEMOS FROM TBLMEMO ORDER BY DATE ASC";
OleDbDataAdapter da = new OleDbDataAdapter(query, TConn);
da.Fill(ds);
this.dgv1.DataSource = ds.Tables[0];
}
private void AddMemo(string MemoDate, string MemoTime, string Memos)
{
TConn.Open();
string acc;
acc = "INSERT INTO TBLMEMO (DATE,TIME,MEMOS) VALUES (@Memodate,@MemoTime,@Memos)";
OleDbCommand cmd = new OleDbCommand(acc, TConn);
cmd.Parameters.AddWithValue("@memDate", MemoDate);
cmd.Parameters.AddWithValue("@memTime", MemoTime);
cmd.Parameters.AddWithValue("@memos", Memos);
cmd.ExecuteNonQuery();
TConn.Close();
}
private void btnAddMemos_Click(object sender, EventArgs e)
{
AddMemo(this.dtpDate.Value.ToShortDateString(), this.dtpTime.Value.ToShortTimeString(), this.txtInfo.Text.Trim());
GetMemoList();
txtInfo.Clear();
}
表的主键不能设置为自动递增
TBLMEMO表中可能有三个以上的字段,但您只插入了三个字段。这就是为什么你会得到这个错误"查询值的数量和目的地字段不一样。"
尝试
"INSERT INTO TBLMEMO(COLUMNNAME1, COLUMNNAME2, COLUMNNAME3) VALUES ('" + MemoDate + "','" + MemoTime + "','" + Memos + "')";
尝试在查询中指定字段
acc = "INSERT INTO TBLMEMO (fld1Name, fld2Name, fld3Name) VALUES ('" + MemoDate + "','" + MemoTime + "','" + Memos + "')";
始终在INSERT语句中指定目标列。您还希望在语句中使用Parameters来避免Sql注入攻击。
var acc = "INSERT INTO TBLMEMO (DATE, TIME, MEMOS) VALUES (@date, @time, @memos)";
TConn.Open();
var cmd = new SqlCommand(acc, TConn);
cmd.Parameters.AddWithValue("date", MemoDate);
cmd.Parameters.AddWithValue("time", MemoTime);
cmd.Parameters.AddWithValue("memos", Memos);
cmd.ExecuteNonQuery();
TConn.Close();