这是我的代码:
string sql = string.Format("select * from StockInTb ");
DataTable dt = dataAccess.GetDataTable(sql);
UploadService.UploadClient client = new UploadService.UploadClient();
if (client.UpdateTest(dt))
{
MessageBox.Show("suceess");
}
else
{
MessageBox.Show("fail");
}
这是我的dataaccess
课程:
private static string connString;
private static SQLiteConnection conn;
public SQLiteDataAccess()
{
connString = ConfigurationManager.ConnectionStrings["ConnectionString"].ToString();
}
private void OpenConn()
{
try
{
if (conn == null)
{
conn = new SQLiteConnection(connString);
}
if (conn.State != System.Data.ConnectionState.Open)
{
conn.Open();
}
}
catch (Exception ex)
{
LogUtil.Log("ex:" + ex.Message);
}
}
private void CloseConn()
{
try
{
if (conn.State != System.Data.ConnectionState.Closed)
{
conn.Close();
}
}
catch (Exception ex)
{
LogUtil.Log("ex:" + ex.Message);
}
}
public System.Data.DataTable GetDataTable(string sql)
{
DataTable dtResult = new DataTable();
try
{
OpenConn();
SQLiteDataAdapter adpter = new SQLiteDataAdapter(sql, conn);
DataSet ds = new DataSet();
adpter.Fill(ds);//here,I got the error.
if (ds.Tables.Count > 0)
{
dtResult = ds.Tables[0];
}
}
catch (Exception ex)
{
LogUtil.Log("ex:" + ex.Message);
}
finally
{
CloseConn();
}
return dtResult;
}
我收到了错误:
字符串未被识别为有效的DateTime。
数据库是SQLite,表StockInTb
包含一些类型为datetime
的列。
我找到了一些像datetime.toString(s)
这样的解决方案,但这不是我需要的。
我不知道如何解决这个奇怪的问题。如果有人知道答案,请告诉我。
感谢。
答案 0 :(得分:0)
您可以使用如下参数,假设您有一个名为MyDateTime
的列,并且在StockInTb表中键入了DateTime,那么您的查询应该如下更改。
请注意,@InputDate
将使用Command.Parameters.Add
方法添加托架。需要在两个地方都给出相同的名称,你可以直接从DateTime对象设置参数(这里命名为InputDate
Command.CommandText = "select * from StockInTb where MyDateTime = @InputDate";
Command.Parameters.Add("@InputDate", InputDate);