可以';t插入数据
本文关键字:插入 数据 可以 | 更新日期: 2023-09-27 18:20:35
我找不到为什么我的数据没有插入数据库的错误。我使用sql server。DB是3个字段:1)id(int)2)test1(varchar(50))3)test2(varchar50)。我尝试插入文本框中的数据和日期。
private void SaveToDB()
{
string strSql = "";
string[] tos = txtTo.Text.Split(';');
for (int i = 0; i < tos.Length; i++)
{
strSql += "INSERT INTO test (test1, test2) VALUES ('" + txtContent.Text.Trim() + "','" + DateTime.Now.ToString() + "');";
}
using (SqlConnection connection = new SqlConnection(Common.ConnetionString))
{
connection.Open();
SqlTransaction tran = connection.BeginTransaction();
try
{
SqlCommand cmd = new SqlCommand(strSql, connection, tran);
cmd.ExecuteNonQuery();
tran.Commit();
}
catch (Exception e)
{
tran.Rollback();
}
finally
{
connection.Close();
Response.Redirect("messagelist.aspx?flag=2");
}
}
}
但是我应该如何更改代码,该参数在循环中工作
您的循环应该包含整个块。另外,参数化您的查询,这样您就不会对注入敞开大门。这只是一个建议,但我也会在sql语句中使用BEGIN TRANSACTION
,而不是SqlTransaction tran
,它将为您处理回滚并稍微清理代码。
string[] tos = txtTo.Text.Split(';');
for (int i = 0; i < tos.Length; i++)
{
string strSql = "INSERT INTO test (test1, test2) VALUES (@Content, @DateTime);";
using (SqlConnection connection = new SqlConnection(Common.ConnetionString))
{
connection.Open();
SqlTransaction tran = connection.BeginTransaction();
try
{
using (SqlCommand cmd = new SqlCommand(strSql, connection, tran))
{
cmd.Parameters.AddWithValue("@Content", txtContent.Text.Trim());
cmd.Parameters.AddWithValue("@DateTime", DateTime.Now.ToString());
cmd.ExecuteNonQuery();
tran.Commit();
}
}
catch (Exception e)
{
tran.Rollback();
}
finally
{
connection.Close();
Response.Redirect("messagelist.aspx?flag=2");
}
}
}