截断日期时间SQL中的异常

时间:2015-03-24 07:28:31

标签: c# sql winforms sqlconnection

我在SQL中遇到问题,不知道为什么会这样。首先我展示我的代码:

for (int i = 0; i < dateList.Count;i++ )
{
     String connectionQuery = form1.conStringBox.Text;
     SqlConnection connection = new SqlConnection(connectionQuery);

     SqlCommand sqlComInsert = new SqlCommand(@"INSERT INTO [" + form1.tableName.Text + "] ([" + form1.cusName.Text + "],[" + form1.date.Text + "]) VALUES(@cusName, @date)", connection);
     sqlComInsert.Parameters.AddWithValue("cusName", cusName[i]);
     sqlComInsert.Parameters.AddWithValue("date",date[i]);

此修改后的代码来自此处: Update database with date format

我试着描述最重要的事情: 我有一个文本文件,我从中读取值(有两列 - &gt; cusNamedate)。我将它们存储在两个列表中(cusName list = Stringdate list = DateTime)。现在我想将它们存储在我的数据库中。 date列的columntype是datetime。

不知何故,上面的代码我得到了一个异常(string or binary data would be truncated)。这发生在日期列。在我的SQL Server 2008中,它显示为(例如)2013-10-21 00:00:00.000。由于我在德国计算机上工作,当我将它们放入我的列表时,它们显示为:21.10.2013 00:00:00

现在为什么我在另一个帖子中接受了答案?因为当我在另一台计算机上尝试上述代码时,它起作用。当我在计算机上尝试这个时,我正坐在那里,我得到了错误。我在两台计算机上使用SQL Server 2008和Windows 7(但我曾经意识到SQL Server上的案例敏感性存在差异)。所以我不知道错误在哪里。希望有人可以帮助我。

文本文件中的示例数据类似于每一行:

名1; 2013-09-27

1 个答案:

答案 0 :(得分:0)

我建议在将日期字符串发送到SQL服务器之前格式化YYYYMMDD格式的日期字符串。

我认为传递一个DateTime类型字段会自动处理转换,但我还没与不同地区的服务器/计算机一起工作,所以我不确定。我知道SQL会处理转换&#34; YYYYMMDD&#34;将字符串转换为Date / DateTime(如果你走这条路线,继续将字符串作为参数传递)。

另一方面,您提到的错误通常与DateTime字段无关(它们通常会为您提供有关日期转换失败的信息)。为了以防万一,我会仔细检查您的名称列和所有名称输入的长度。也可以对字符串进行多字节编码,使它们占用比它们看起来更多的空间?如果不知道输入是什么样的话,很难说!