Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SQL中的截断日期时间异常_C#_Sql_Winforms_Sqlconnection - Fatal编程技术网

C# SQL中的截断日期时间异常

C# SQL中的截断日期时间异常,c#,sql,winforms,sqlconnection,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 SqlComma

我在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]);
修改后的代码来自这里:

我试图描述最重要的事情: 我有一个文本文件,从中读取值,有两列->cusName和date。我将它们存储在两个列表中:name list=String,date list=DateTime。现在我想把它们存储在我的数据库中。日期列的columntype为datetime

不知何故,通过上面的代码,我得到了一个异常字符串,或者二进制数据将被截断。这发生在日期列。在我的SQL Server 2008中,它显示为例如2013-10-21 00:00:00.000。因为我在一台德国计算机上工作,当我把它们放在我的列表中时,它们显示为:21.10.2013 00:00:00

现在我为什么要接受另一条线索中的答案?因为当我在另一台计算机上尝试上述代码时,它起作用了。当我在计算机上尝试这个时,我现在坐着,我得到了错误。我在这两台计算机上都使用SQL Server 2008和Windows 7,但我曾经意识到SQL Server上的case sensivity存在差异。所以我不知道错误在哪里。希望有人能帮助我

文本文件中每行的示例数据如下所示:


名称1;2013-09-27

我建议在将日期字符串发送到SQL server之前,将其格式化为YYYYMMDD格式

我假设传递一个DateTime类型的字段会自动处理转换,但我还没有处理过不同地区的服务器/计算机,所以我不能确定这一点。我知道SQL将处理将YYYYMMDD字符串转换为日期/日期时间的过程,如果您使用该方法,则继续将该字符串作为参数传递


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

您是否尝试过使用OleDb加载文本文件?请提供示例数据。加载文本文件应该不是问题。它被读取,值被存储到列表中。这很有效。我不想使用OleDb。您的问题可能不是datetime列,而是varchar列的长度。尝试检查插入的字符串是否长于您的varchar列长度。否。两者都是德国计算机。两者都有Windows 7在其上运行,并且都使用SQL Server 2008。所以我不知道问题出在哪里。我检查了字符列…好的,谢谢你的提示。我意识到在这个数据库中,char列的大小为3,而我试图添加的字符串的长度为4。多么愚蠢的错误啊。非常感谢你!对某一列的字符长度有问题。SQL似乎会在使用参数输入时自动转换日期。啊,很高兴知道!我花了太长时间打字,没有看到之前的评论!