当使用c#关闭与SQL server的连接时
本文关键字:server SQL 连接 | 更新日期: 2023-09-27 18:03:41
public void addRow( string[] values)
{
string addrow = "INSERT INTO " + tableName + " VALUES ( ' ";
for (int i = 0; i < values.Length; i++)
{
addrow += values[i] + "' ";
if (i == values.Length - 1)
break;
addrow += " ,' ";
}
addrow += " )";
createConnection();
sqlcmd = new SqlCommand(addrow, sqlcon);
sqlcmd.Connection.Open();
sqlcmd.BeginExecuteNonQuery();
//sqlcmd.Connection.Close();
}
这个方法在我的类SqlCmds
应该添加新行到我的本地数据库,但当关闭连接没有任何事情发生在我的数据库,我必须离开连接打开添加新行我该怎么办?
提前致谢:D */
Try
sqlcmd.ExecuteNonQuery()
你还应该考虑把一次性对象包装在using语句中,让它处理对象的关闭/处置。
让我们做正确的:
public void addRow (string[] values) {
// Validate public methods arguments
if (null == values)
throw new ArgumentNullException("values");
// Make the query parametrized: it's faster and not prone to SQL injection
// Do not append String in a loop; use Join instead
string sql = string.Format("INSERT INTO {0} VALUES ({1})",
tableName,
string.Join(", ", values.Select((item, index) => "@param_" + index.ToString()));
// wrap IDisposable into using
// let createConnection() return the connection created
using (var con = createConnection()) {
con.Open();
// wrap IDisposable into using
using (var cmd = new SqlCommand(sql, con)) {
// Parametrized query: parameters assigning
for (int index = 0; index < values.Length; ++index)
cmd.Parameters.AddWithValue("@param_" + index.ToString(), values[i]);
// Finally query executing
cmd.ExecuteNonQuery();
}
}
}