2013-02-21 20 views
-2

我得到這個錯誤:我得到了這個錯誤「查詢值和目標字段的數目不一樣。」

Syntax Error INSERT INTO Statement

這是正確的,另一個是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(); 
} 
+0

什麼是'TBLMEMO'表的結構? – 2013-02-21 10:08:38

回答

0

表TBLMEMO可能有三個以上的領域,但你將只有3場。這就是爲什麼你得到這個錯誤「查詢值和目標字段的數量不相同。」

TRY

"INSERT INTO TBLMEMO(COLUMNNAME1, COLUMNNAME2, COLUMNNAME3) VALUES ('" + MemoDate + "','" + MemoTime + "','" + Memos + "')"; 
+0

如果它有4個,有一個自動生成的id列?它仍然可以工作... – 2013-02-21 10:09:56

+0

@ALEX - 假設ID列不是系統生成的,那麼... – 2013-02-21 10:10:36

+0

但先生生病了,但有另一個錯誤 – Timart 2013-02-21 10:13:15

0

嘗試查詢

acc = "INSERT INTO TBLMEMO (fld1Name, fld2Name, fld3Name) VALUES ('" + MemoDate + "','" + MemoTime + "','" + Memos + "')"; 
0

到指定的字段始終在INSERT語句中指定目標列。您還需要在語句中使用參數以避免Sql Injection攻擊。

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(); 
+0

當我在cmd.ExecuteNonQuery()中使用該代碼時,試試這個w8 – Timart 2013-02-21 10:21:28

+0

; OleException是語法錯誤INSERT INTO語句 – Timart 2013-02-21 10:25:52

+0

您能否提供完整的異常詳細信息。查看TBLMEMO的CREATE TABLE語句和您執行的完整代碼也很有幫助。 – 2013-02-21 10:57:09

1

表的主鍵,可以不設置爲自動增量

+0

我已經這樣做,但仍然錯誤是Systax錯誤INSERT INTO – Timart 2013-02-21 10:38:31

相關問題