当其中一个值包含特殊字符时,存储过程失败

Jam*_*mie 1 c# sql visual-studio-2010

我有一个特殊字符的问题.因为当存在'字符时,代码将失败.如何使用下面的存储过程使其与特殊字符一起使用.

        internal bool AddRecord()
        {
             string SQL = "exec SqlInsert ";

             SQL += "'" + _sqlComputer + "', ";
             SQL += "'" + _lastUpdatedBy + "', ";
             SQL += "'" + DateTime.Now + "', ";
             SQL += "'" + _softwareName + "' ";

             return SqlDatabase.Overig(SQL);
        }
Run Code Online (Sandbox Code Playgroud)

Raj*_*mar 5

像这样

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();
Run Code Online (Sandbox Code Playgroud)

根据您的要求编辑

而不是传递价值

SqlDatabase.Overig(SQL);
Run Code Online (Sandbox Code Playgroud)

做这个

SqlDatabase.Overig(_sqlComputer,_lastUpdatedBy,DateTime.Now,_softwareName);
Run Code Online (Sandbox Code Playgroud)

并在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();

 }
Run Code Online (Sandbox Code Playgroud)