Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.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 - Fatal编程技术网

C#打印出中断的SQL行时出现异常

C#打印出中断的SQL行时出现异常,c#,sql,C#,Sql,我有一个基于电子表格插入SQL数据的函数。由于被截断,我遇到了某些行触发异常的问题,我正在尝试找出导致该问题的行。(我必须查询3个不同的表,因此我使用一个传递SQL/命令参数/值的函数,而不是三次编写同一个函数) 该函数用于插入SQL数据,但抛出ex消息的几行除外: 字符串或二进制数据将被截断。声明已被修改 终止 我的问题是如何打印导致上述消息对excel工作表中的数据进行故障排除的行号。这张纸的大小是10+000行,所以我不想一行一行地看 我的职能是: public static void i

我有一个基于电子表格插入SQL数据的函数。由于被截断,我遇到了某些行触发异常的问题,我正在尝试找出导致该问题的行。(我必须查询3个不同的表,因此我使用一个传递SQL/命令参数/值的函数,而不是三次编写同一个函数)

该函数用于插入SQL数据,但抛出ex消息的几行除外:

字符串或二进制数据将被截断。声明已被修改 终止

我的问题是如何打印导致上述消息对excel工作表中的数据进行故障排除的行号。这张纸的大小是10+000行,所以我不想一行一行地看

我的职能是:

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他是我在上面的评论部分所需要的。如果你自己添加完整的答案,那就太好了:),加上一个示例代码…,等等。