System.Data.dll中出现“System.Data.SqlClient.SqlException”类型的异常,但未在用户代码中处理

时间:2014-01-21 13:04:10

标签: c# wcf

我已经创建了一个本地数据库和一个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),因为我想首先使插入工作。

为什么它会给我这个例外?

2 个答案:

答案 0 :(得分:0)

确保确切的数据库连接和列,数据类型。

答案 1 :(得分:0)

我有这个代码,这很好用!

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的连接字符串。我希望这会有所帮助!

由于