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();
}
}
尝试
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)