我对一个特殊的角色有个问题。因为当有‘字符时,代码将失败。如何通过使用下面的存储过程使其与特殊字符一起工作。
        internal bool AddRecord()
        {
             string SQL = "exec SqlInsert ";
             SQL += "'" + _sqlComputer + "', ";
             SQL += "'" + _lastUpdatedBy + "', ";
             SQL += "'" + DateTime.Now + "', ";
             SQL += "'" + _softwareName + "' ";
             return SqlDatabase.Overig(SQL);
        }发布于 2013-05-02 20:32:00
像这样
SqlCommand cmd = new SqlCommand("SqlInsert", sqlCon);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@Param1", SqlDbType.VarChar, 25).Value = _sqlComputer ;
cmd.Parameters.Add("@Param2", SqlDbType.VarChar, 50).Value = _lastUpdatedBy ;
cmd.Parameters.Add("@Param3", SqlDbType.DateTime).Value = DateTime.Now
cmd.Parameters.Add("@Param4", SqlDbType.Varchar,50).Value = _softwareName ;
sqlCon.Open();
SqlDataReader dr = cmd.ExecuteReader();
DataTable dt = new DataTable();
dt.Load(dr);
sqlCon.Close();
dr.Dispose();
cmd.Dispose();根据您的需求进行编辑
而不是像这样传递值
SqlDatabase.Overig(SQL);执行此操作
SqlDatabase.Overig(_sqlComputer,_lastUpdatedBy,DateTime.Now,_softwareName);并在Overig方法中进行更改,如
Overig(String sqlCom, string UpdatedBy, DateTime dat, string software)
{
SqlCommand cmd = new SqlCommand("SqlInsert", sqlCon);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@Param1", SqlDbType.VarChar, 25).Value = sqlCom;
cmd.Parameters.Add("@Param2", SqlDbType.VarChar, 50).Value = UpdatedBy;
cmd.Parameters.Add("@Param3", SqlDbType.DateTime).Value = dat
cmd.Parameters.Add("@Param4", SqlDbType.Varchar,50).Value = software;
sqlCon.Open();
SqlDataReader dr = cmd.ExecuteReader();
DataTable dt = new DataTable();
dt.Load(dr);
sqlCon.Close();
dr.Dispose();
cmd.Dispose();
 }发布于 2013-05-02 20:34:50
如果通过构建SQLCommand对象并向其添加参数来执行SQL,则使用特殊字符作为参数会更容易。
在这个相关的问题中有一个很好的例子来说明如何做到这一点:Call a stored procedure with parameter in c#
发布于 2013-05-02 20:31:37
,因为当有‘字符时,代码将失败
然后试试这个:
internal bool AddRecord()
        {
             string SQL = "exec SqlInsert ";
             SQL += "'" + PrepeareForSql(_sqlComputer) + "', ";
             SQL += "'" + PrepeareForSql(_lastUpdatedBy) + "', ";
             SQL += "'" + DateTime.Now + "', ";
             SQL += "'" + PrepeareForSql(_softwareName) + "' ";
             return SqlDatabase.Overig(SQL);
        }
private string PrepeareForSql(string s)
{
   return s.Replace("'","''");
}https://stackoverflow.com/questions/16338037
复制相似问题