我正在编写一个示例应用程序,使用C#将数据插入SQL Server数据库。数据不会持久存储在数据库中。
以下是我的代码:
conn.Open();
SqlCommand cmd = conn.CreateCommand();
cmd.CommandType = System.Data.CommandType.Text;
cmd.CommandText = "Insert into Record (ID,Name) values ('" + txtId.Text + "' , '" + txtName.Text + "')";
cmd.ExecuteNonQuery();
//cmd.Clone();
conn.Close();
值不会保留。插入值时没有错误。当我将命令改为:
时"Insert into Database.dbo.Record (ID,Name) values ('"
它引发了异常:
关键字'数据库'附近的语法不正确。
为什么我的SQL Server数据库没有更新?
答案 0 :(得分:0)
你的代码原样,可能对SQL注入开放 - 你应该使用参数。
同时检查表名和主键,例如如果ID是一个Identity列,它会在你插入时自动生成,所以你只需要INSERT INTO Record(Name)VALUES('Bob')
否则,如果ID是主键,您可能需要检查您是否尝试插入重复项。
请使用参数! (如果需要,调整SqlDbType)
您还应该在连接上使用using语句来正确处理资源,理想情况下使用事务进行更新:
string sqlQuery = "INSERT INTO Record (ID, Name) VALUES (@id, @name); ";
using (SqlConnection conn = new SqlConnection(connectionString)) {
conn.Open();
SqlTransaction tran = conn.BeginTransaction();
try {
SqlCommand command = new SqlCommand(sqlQuery, conn, tran);
SqlParameter in1 = command.Parameters.Add("@id", SqlDbType.NVarChar);
in1.Value = txtId.Text;
SqlParameter in2 = command.Parameters.Add("@name", SqlDbType.NVarChar);
in1.Value = txtName.Text;
command.ExecuteNonQuery();
tran.Commit();
} catch (Exception ex) {
tran.Rollback();
//...
}
}