SQL 插入到 asp.net 中
本文关键字:net asp 插入 SQL | 更新日期: 2023-09-27 17:56:12
con.Open();
SqlCommand cmd=new SqlCommand("INSERT INTO user(Firstname,Lastname,Email,Pass,Type)
values(@first,@last,@email,@pass,@type)",con);
cmd.Parameters.Add("@first",SqlDbType.NVarChar).Value = txtfirst.Text;
cmd.Parameters.Add("@last",SqlDbType.NVarChar).Value = txtlast.Text;
cmd.Parameters.Add("@email",SqlDbType.NVarChar).Value = txtemail.Text;
cmd.Parameters.Add("@pass",SqlDbType.NVarChar).Value = txtpass.Text;
cmd.Parameters.Add("@type",SqlDbType.NVarChar).Value = "customer";
cmd.ExecuteNonQuery();
con.Close();
我的语法有什么问题,它说"关键字'user'附近的语法不正确"。
您应该使用分隔标识符转义表名user
,
SqlCommand cmd=new SqlCommand("INSERT INTO [user] (Firstname,Lastname,Email,Pass,Type) values(@first,@last,@email,@pass,@type)",con);
- SQL Server 保留关键字
- SQL Server 分隔标识符
更新 1
折射您的代码
- 使用
using
语句正确释放对象 - 使用
Try-Catch
块正确处理异常
代码片段:
string _connStr = "connectionString here";
string _query = "INSERT INTO [user] (Firstname,Lastname,Email,Pass,Type) values (@first,@last,@email,@pass,@type)";
using (SqlConnection conn = new SqlConnection(_connStr))
{
using (SqlCommand comm = new SqlCommand())
{
comm.Connection = conn;
comm.CommandType = CommandType.Text;
comm.CommandText = _query;
comm.Parameters.AddWithValue("@first", txtfirst.Text);
comm.Parameters.AddWithValue("@last", txtlast.Text);
comm.Parameters.AddWithValue("@email", txtemail.Text);
comm.Parameters.AddWithValue("@pass", txtpass.Text);
comm.Parameters.AddWithValue("@type", "customer");
try
{
conn.Open();
comm.ExecuteNonQuery();
}
catch(SqlException ex)
{
// other codes here
// do something with the exception
// don't swallow it.
}
}
}
- 添加值
- 添加(推荐一个)
USER
是SQL Server上的保留关键字。
您应该使用带有括号的表名[]
类似;
INSERT INTO [user]
你可以尝试喜欢;
con.Open();
SqlCommand cmd=new SqlCommand("INSERT INTO [user] (Firstname,Lastname,Email,Pass,Type) values(@first,@last,@email,@pass,@type)",con);
cmd.Parameters.AddWithValue("@first", txtfirst.Text);
cmd.Parameters.AddWithValue("@last", txtlast.Text);
cmd.Parameters.AddWithValue("@email", txtemail.Text);
cmd.Parameters.AddWithValue("@pass", txtpass.Text);
cmd.Parameters.AddWithValue("@type", "customer");
cmd.ExecuteNonQuery();
con.Close();
而且就像@JW所说,在 try-catch 语句中使用它们始终是一种好方法。
- 异常管理的最佳实践