C#sql INSERT INTO引发异常System.Data.SqlClient.SqlException

本文关键字:System Data SqlClient SqlException 异常 INSERT INTO C#sql | 更新日期: 2023-09-27 18:25:14

提前感谢您提供的任何帮助。我目前正在使用Visual Studio 2015构建一个程序,并试图编写一个方法来执行我已经建立的INSERT INTO表。

当我运行代码时,我得到

引发异常:System.Data.dll中的"System.Data.SqlClient.SqlException"

控制台中的异常消息。我是SQL的新手,所以任何基本原则和建议都将不胜感激!

private void InsertIntoAccount(int number, string type, string date)
{
    using (SqlConnection connection1 = new SqlConnection(connectionString))
    {
        //Establish a connection
        connection1.Open();
        string sqlstring = "INSERT INTO Account (AccountNumber, Type, DateOpened) VALUES (@number, @type, @date)";
        SqlCommand cmd = new SqlCommand(sqlstring, connection1);
        //Fill in parameters
        cmd.Parameters.Add("@number", SqlDbType.Int).Value = number;
        cmd.Parameters.Add("@type", SqlDbType.VarChar, 100).Value = type;
        cmd.Parameters.Add("@date", SqlDbType.VarChar, 100).Value = date;
        //Execute
        //<REMOVED> cmd.CommandType = CommandType.Text;
        cmd.ExecuteNonQuery();
        connection1.Close();
    }   
}    

C#sql INSERT INTO引发异常System.Data.SqlClient.SqlException

尝试

            cmd.CommandTimeout = 300;
            cmd.CommandType = CommandType.Text;

对于DateOpened字段,是varchar类型的字段还是date/datetime 类型的字段

如果是date/datetime类型,请尝试将字符串转换为日期对象,然后将行更改为

cmd.Parameters.Add("@date", SqlDbType.Date, 100).Value = date;

确保数据库数据类型正确。您有一个日期字段,但您正在分配一个数据类型为VARCHAR的值。尝试将您的第三个参数声明更改为以下内容:

cmd.Parameters.Add("@date", SqlDbType.Date).Value = date;

您的连接字符串值很可能不正确。该错误意味着数据库中没有使用连接字符串指定的表Account

在您的示例中,您将字符串值作为连接字符串传递,假设您已在代码中的某个位置定义了它。

连接字符串:

Server=myServerName'myInstanceName;Database=myDataBase;User Id=myUsername;

密码=myPassword;

示例:

connectionString="Data Source=(localdb)'MSSQLLocalDB; Initial Catalog=test; Integrated Security=True;"

交叉检查此变量。初始目录应该是数据库名称。

更好的方法是从web.config中读取连接字符串。

SqlConnection connection1 = new SqlConnection(ConfigurationManager.ConnectionStrings["connectionString"].ConnectionString)