【问题标题】:An exception of type 'System.Data.SqlClient.SqlException' occurred in System.Data.dll but was not handled in user codeSystem.Data.dll 中出现“System.Data.SqlClient.SqlException”类型的异常,但未在用户代码中处理
【发布时间】:2014-01-21 13:04:09
【问题描述】:

我创建了一个本地数据库和一个 WCF 服务,它应该在名为 Vehicles 的表中插入内容,但我不断收到异常。该服务由网站使用。我的 .svc 文件的代码是:

string Message;
using (SqlConnection con = new SqlConnection("Server=localhost;Database=Vehicles;"))
{
    con.Open();
    using (var cmd = new SqlCommand("INSERT INTO Vehicles(make,model,reg_nr,build_date,colour) values(@make,@model,@reg_nr,@build_date,@colour)", con))
    {
        cmd.Parameters.AddWithValue("@make", carInfo.Make);
        cmd.Parameters.AddWithValue("@model", carInfo.Model);
        cmd.Parameters.AddWithValue("@reg_nr", carInfo.Reg_nr);
        cmd.Parameters.AddWithValue("@build_date", carInfo.Build_date);
        cmd.Parameters.AddWithValue("@colour", carInfo.Colour);
        int result = cmd.ExecuteNonQuery();
        if (result == 1)
        {
            Message = carInfo.Make + " " + carInfo.Model + " => Success!";
        }
        else
        {
            Message = "Oops!";
        }
        con.Close();
        return Message;
    }
}

我在con.Open(); 的标题中看到了例外情况。 build_date 也是 nvarchar(50),因为我想先让插入工作。

为什么给我这个例外?

【问题讨论】:

标签: c# wcf


【解决方案1】:

确保准确的数据库连接和列、数据类型。

【讨论】:

    【解决方案2】:

    我有这段代码,而且运行良好!

    using (connection = new SqlConnection(Auth2Manager.getAuthConnectionString()))
                {
                    SqlCommand cmd = new SqlCommand("INSERT INTO " + Tables.TABLE_USERS + " (" + Columns.USER_NAME + ","
                        + Columns.PASSWORD + "," + Columns.TOKEN + ","
                        + Columns.CREATED_DATE + "," + Columns.UPDATED_DATE + "," + Columns.UPDATED_BY
                        + "," + Columns.IS_ACTIVE + "," + Columns.APP_ID + ")" +
                    " VALUES (@UserName, @Password, @Token, @CreatedDate, @UpdatedDate, @UpdatedBy, @IP, @IsActive, @AppId)");
                    cmd.CommandType = System.Data.CommandType.Text;
                    cmd.Connection = connection;
    
                    string token = Helper.generateUniqueToken();
                    tokenGenerated = token; 
                    Console.WriteLine(token);
    
                    cmd.Parameters.AddWithValue("@UserName", user.UserName);
                    cmd.Parameters.AddWithValue("@Password", user.Password);
                    cmd.Parameters.AddWithValue("@Token", token);
    
                    dateNow = DateTime.Now;
                    date = dateNow.Year.ToString() + "-" + dateNow.Month.ToString() + "-" + dateNow.Day.ToString();
    
                    cmd.Parameters.AddWithValue("@CreatedDate", date);
                    cmd.Parameters.AddWithValue("@UpdatedDate", date);
                    cmd.Parameters.AddWithValue("@UpdatedBy", user.UserName);
                    cmd.Parameters.AddWithValue("@IsActive", 1);
                    cmd.Parameters.AddWithValue("@AppId", user.ApplicationID);
    
                    connection.Open();
                    resultCount = cmd.ExecuteNonQuery();
                }
                if (resultCount > 0)
                {
                    return true;
                }
                else
                    return false;
            }
            else {
                tokenGenerated = null;
                return false;
            }
    

    在为 SqlCommand 设置所有参数后尝试打开连接。而且!我有这种形式的连接字符串Data Source=PP-DEV-DMS-01;Initial Catalog=SalesDWH2;Integrated Security=SSPI。我希望这会有所帮助!

    谢谢

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多