2014-09-06 48 views
-1

插入错误,以便将新数据插入Access表。 该表有4个参数。第一个是自动编号。 这是我的代码:使用access + asp.net/C#

public void InsertToDB(int stationId, DateTime dateTime, double temperture) 
{ 

    connect.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Database1.accdb"; 

    OleDbCommand cmd = new OleDbCommand(); 
    cmd.Connection = connect; 
    cmd.CommandText = "Insert Into TempDate (StationID,DateTime,Temper)" + "Values(@ID,@dateTime,@temper)"; 

    cmd.Parameters.Add("@ID", OleDbType.Integer).Value = stationId; 
    cmd.Parameters.Add("@dateTime", OleDbType.Date).Value = dateTime; 
    cmd.Parameters.Add("@temper", OleDbType.Double).Value = temperture; 

    connect.Open(); 
    cmd.ExecuteNonQuery();   //At this line exception is generating 
    connect.Close(); 


}// insert to db 

即时得到这个错误:

错误码= -2147217900

+2

也许只是把该错误代码到谷歌搜索?已经给出了如此多的结果如何解决它,例如http://stackoverflow.com/questions/13898551/i-am-getting-an-error-when-i-try-to-update-records-in-my- access-database – walther 2014-09-06 14:51:00

回答

1

您错过了值之前的空格。你可以把它放在一个字符串中,不需要连接它们。另外,正如戈德所说 - DateTime是一个保留字 - 所以把它放在括号内。例如:

cmd.CommandText = "Insert Into TempDate (StationID,[DateTime],Temper) Values (@ID,@dateTime,@temper)"; 
+0

谢谢boath!它的工作! – 2014-09-06 16:12:40

0

DATETIME显然是一个保留字,所以你需要把它们放在方括号:

cmd.CommandText = "Insert Into TempDate (StationID,[DateTime],Temper)" + ...