C#打印出中断的SQL行时出现异常
我有一个基于电子表格插入SQL数据的函数。由于被截断,我遇到了某些行触发异常的问题,我正在尝试找出导致该问题的行。(我必须查询3个不同的表,因此我使用一个传递SQL/命令参数/值的函数,而不是三次编写同一个函数) 该函数用于插入SQL数据,但抛出ex消息的几行除外: 字符串或二进制数据将被截断。声明已被修改 终止 我的问题是如何打印导致上述消息对excel工作表中的数据进行故障排除的行号。这张纸的大小是10+000行,所以我不想一行一行地看 我的职能是:C#打印出中断的SQL行时出现异常,c#,sql,C#,Sql,我有一个基于电子表格插入SQL数据的函数。由于被截断,我遇到了某些行触发异常的问题,我正在尝试找出导致该问题的行。(我必须查询3个不同的表,因此我使用一个传递SQL/命令参数/值的函数,而不是三次编写同一个函数) 该函数用于插入SQL数据,但抛出ex消息的几行除外: 字符串或二进制数据将被截断。声明已被修改 终止 我的问题是如何打印导致上述消息对excel工作表中的数据进行故障排除的行号。这张纸的大小是10+000行,所以我不想一行一行地看 我的职能是: public static void i
public static void insert_data(string[] cols, string[] vals, string sql)
{
int exception_count = 0;
List<string> rows = new List<string>();
string connectionString = "Server = ; Database = ; User Id = ; Password = ";
using (SqlConnection connection = new SqlConnection(connectionString))
using (SqlCommand command = new SqlCommand(sql, connection))
{
connection.Open();
for(int x = 0; x<cols.Length; x++)
command.Parameters.AddWithValue(cols[x], vals[x]);
try
{
command.ExecuteNonQuery();
}
catch (Exception ex)
{
exception_count =+ 1;
Console.WriteLine(ex.Message);
//rows.Add(--rows number--);
}
}
}
publicstaticvoidinsert_数据(字符串[]cols,字符串[]vals,字符串sql)
{
int异常计数=0;
列表行=新列表();
string connectionString=“服务器=;数据库=;用户Id=;密码=”;
使用(SqlConnection连接=新的SqlConnection(connectionString))
使用(SqlCommand=newsqlcommand(sql,连接))
{
connection.Open();
对于(int x=0;x,如我所见,行来自数组,因此首先使用lambda表达式查找长度大于所需长度的行,或反之查找长度小于或等于的行,具体取决于您
public void test2()
{
//ensure that there is no empty rows in the array... of will thrown an exception
string[] vals = new string[7];
int myMaxColumnDatabaseLenght = 7;
vals[0] = "length7";
vals[1] = "length7";
vals[2] = "length7";
vals[3] = "length7";
vals[4] = "length_8";
vals[5] = "length__9";
vals[6] = "length__10";
Debug.WriteLine(vals.Count());
vals = vals.Where(x => x.Length <= myMaxColumnDatabaseLenght).ToArray();
Debug.WriteLine(vals.Count());
}
public void test2()
{
//确保…的数组中没有空行将引发异常
字符串[]VAL=新字符串[7];
int myMaxColumnDatabaseLength=7;
VAL[0]=“长度7”;
VAL[1]=“长度7”;
VAL[2]=“长度7”;
VAL[3]=“长度7”;
VAL[4]=“长度_8”;
VAL[5]=“长度9”;
VAL[6]=“长度10”;
Debug.WriteLine(vals.Count());
vals=vals.Where(x=>x.Length尝试捕获SqlException
Ah太好了,谢谢。既然限制在数据库上,您不能检查数据库中字段的大小,并用它与vals[x]的长度进行比较吗
在您将其添加到参数值之前?您可以避免以这种方式引发异常。如果您为每一行调用该方法,则在调用方中保留一个行计数器。当您调用此方法时,要么将行号传递给该方法,要么在调用方中捕获异常,并且您已经知道行号。我感谢您的努力,t他是我在上面的评论部分所需要的。如果你自己添加完整的答案,那就太好了:),加上一个示例代码…,等等。