0

你好我有这个代码:

SqlCommand sc2 = new SqlCommand("SELECT ... WHERE akce=" + zakce.Text, spojeni);

spojeni.Open();

object vysledek2 = sc2.ExecuteScalar(); // This is the exception line

我收到以下异常:

System.Data.SqlClient.SqlException (0x80131904)
将 varchar 值“137000-01”转换为数据类型 int 时转换失败。

当我在 vysledek2 上设置断点时的异常行为空,然后发生异常。

4

3 回答 3

5

绝不。曾经。连接。输入。

SqlCommand sc2 = new SqlCommand("SELECT SUM(ISNULL(payments,0)) AS sumpaymentsFROM clientpayments WHERE akce=@acke", spojeni);
sc2.Parameters.AddWithValue("acke", zakce.Text);

此外 - 命令、连接等都是IDisposable- 你应该using围绕它们使用。

于 2013-09-04T18:34:27.140 回答
1
        const string sqlSelect = @"SELECT ... WHERE akce=@akce";
        using (spojeni = new SqlConnection(connectionString)) 
        using(var command = new SqlCommand(sqlSelect,spojeni))
        {
            command.Parameters.AddWithValue("@akce", zakce.Text);
            command.Connection.Open();
            object vysledek2 = command.ExecuteScalar();
        }
于 2013-09-04T18:58:49.187 回答
0

首先,尝试改变

SqlCommand sc2 = new SqlCommand("SELECT SUM(ISNULL(payments,0)) AS sumpaymentsFROM clientpayments WHERE akce=" + zakce.Text, spojeni);

类似于

SqlCommand sc2 = new SqlCommand("SELECT SUM(ISNULL(payments,0)) AS sumpaymentsFROM clientpayments WHERE akce='" + zakce.Text + "'", spojeni);

其次,看看什么是SQL 注入以及如何使用参数化查询

于 2013-09-04T18:36:32.487 回答