连接数据库
以前用这个方法执行一句SQL语句
但这样容易被注入,
于是我做了以下改进:
不管是几个参数,只需要在写方法和写存储过程时添加上就可以了。
但是写方法时初始化的(SqlParameter[] paras = new SqlParameter[2])paras 参数怎么传进去呢???
呵呵,有点迷~~~早点睡了。
/// <summary>
/// connecting to Database
/// ["personal"]--根据Web.config可更改
/// </summary>
public string strConn = ConfigurationManager.ConnectionStrings["SoftBlogConnectionString1"].ConnectionString;
/// connecting to Database
/// ["personal"]--根据Web.config可更改
/// </summary>
public string strConn = ConfigurationManager.ConnectionStrings["SoftBlogConnectionString1"].ConnectionString;
以前用这个方法执行一句SQL语句
/// <summary>
/// executing SQL commands-执行一段SQL语句
/// </summary>
/// <param name="strSQL">string</param>
/// <returns>return int</returns>
public void dbExecuteSql(string strSQL)
{
SqlConnection myCn = new SqlConnection(strConn);
SqlCommand myCmd = new SqlCommand(strSQL, myCn);
try
{
myCn.Open();
myCmd.ExecuteNonQuery();
}
catch (System.Data.SqlClient.SqlException e)
{
throw new Exception(e.Message);
}
finally
{
myCmd.Dispose();
myCn.Close();
}
}
/// executing SQL commands-执行一段SQL语句
/// </summary>
/// <param name="strSQL">string</param>
/// <returns>return int</returns>
public void dbExecuteSql(string strSQL)
{
SqlConnection myCn = new SqlConnection(strConn);
SqlCommand myCmd = new SqlCommand(strSQL, myCn);
try
{
myCn.Open();
myCmd.ExecuteNonQuery();
}
catch (System.Data.SqlClient.SqlException e)
{
throw new Exception(e.Message);
}
finally
{
myCmd.Dispose();
myCn.Close();
}
}
但这样容易被注入,
于是我做了以下改进:
/// <summary>
/// 用存储过程执行一句SQL语句,需要传入存储过程的名字
/// </summary>
/// <param name="ProcName">存储过程的名字</param>
public void dbExectSqlOnProc(string ProcName)
{
SqlConnection con = new SqlConnection(strConn);
SqlCommand cmd = new SqlCommand(ProcName, con);
cmd.CommandType = CommandType.StoredProcedure;
try
{
con.Open();
cmd.ExecuteNonQuery();
}
catch (System.Data.SqlClient.SqlException e)
{
throw new Exception(e.Message);
}
finally
{
cmd.Dispose();
con.Close();
}
}
这样想执行一句SQL语句时就在数据库中写一个存储过程,然后再在后台给命令对象添加参数,/// 用存储过程执行一句SQL语句,需要传入存储过程的名字
/// </summary>
/// <param name="ProcName">存储过程的名字</param>
public void dbExectSqlOnProc(string ProcName)
{
SqlConnection con = new SqlConnection(strConn);
SqlCommand cmd = new SqlCommand(ProcName, con);
cmd.CommandType = CommandType.StoredProcedure;
try
{
con.Open();
cmd.ExecuteNonQuery();
}
catch (System.Data.SqlClient.SqlException e)
{
throw new Exception(e.Message);
}
finally
{
cmd.Dispose();
con.Close();
}
}
不管是几个参数,只需要在写方法和写存储过程时添加上就可以了。
但是写方法时初始化的(SqlParameter[] paras = new SqlParameter[2])paras 参数怎么传进去呢???
呵呵,有点迷~~~早点睡了。