asp.net 中sqlserver的问题?在线等

wangfeng666 2007-04-29 01:39:54
请教大家一个Sql Server 问题,我做新闻系统时,如果插入新闻内容中含有单引号('),比如:insert [news]([newsid],[newscontent]) values('0001','"+editor.text+"')"
editor.text的值中含有单引号',此时插入就会出错,请问该怎么办?

下面是我在sqlserver查询分析器中的语句
update [aspnet_Enterpriser] set [Title]='九鼎德盛',[Name]='九鼎德盛',[NewsContent]=''九鼎德盛'',[Date]='2007-4-29 9:34:00',[PicUrl]='enterpriser/images/200742994054.jpg',[NewsFrom]='九鼎德盛' where Id='24'提示出错,请大家帮忙?
...全文
188 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
sukaru 2007-04-29
  • 打赏
  • 举报
回复
editor.text.Replace("'", "''");
y_dong119 2007-04-29
  • 打赏
  • 举报
回复
SqlConnection conn=new SqlConnection("server=(local);uid=sa;pwd=;database=pubs");
string cmdtext="insert authors(au_id,au_lname,au_fname) values(@id,@au_lname,@au_fname)";
SqlCommand cmd=new SqlCommand(cmdtext,conn);
cmd.Parameters.Add("@id",SqlDbType.VarChar,50);
cmd.Parameters["@id"].Value="fdfd";
cmd.Parameters.Add("@au_lname",SqlDbType.VarChar,50);
cmd.Parameters["@au_lname"].Value="afafa";
cmd.Parameters.Add("@au_fname",SqlDbType.VarChar,50);
cmd.Parameters["@au_fname"].Value="fasfasfff";
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();

抛砖引玉,楼主看下砖块
sun_Ke 2007-04-29
  • 打赏
  • 举报
回复
nhtoby(飞不起的翼) 正解!
你仿照他那种写法就OK了。
sun_Ke 2007-04-29
  • 打赏
  • 举报
回复
传参数的写法就不会有这种问题了.
nhtoby 2007-04-29
  • 打赏
  • 举报
回复
public bool Insert(string userName,string blogContent,string weather,DateTime addTime)//这个是DAL层的
{
SqlParameter[] Parms = {
new SqlParameter("@WB_UserName",SqlDbType.VarChar),
new SqlParameter("@WB_BlogContent",SqlDbType.NText),
new SqlParameter("@WB_Weather",SqlDbType.VarChar),
new SqlParameter("@WB_AddTime",SqlDbType.DateTime)
};

Parms[0].Value = userName;
Parms[1].Value = blogContent;
Parms[2].Value = weather;
Parms[3].Value = addTime.Date;
int val = SqlHelper.ExecuteNonQuery("INSERT INTO WB_Blog(WB_UserName,WB_BlogContent,WB_Weather,WB_AddTime) VALUES(@WB_UserName,@WB_BlogContent,@WB_Weather,@WB_Addtime)", Parms);
if (val > 0)
{
return true;
}
else
{
return false;
}
}

//下面两个是sqlhelper类里面的
public DataSet Query(string cmdText, params SqlParameter[] commandParameters)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
DataSet ds = new DataSet();
SqlCommand cmd = new SqlCommand(cmdText, connection);
try
{
connection.Open();
PrepareCommand(cmd, cmdText, commandParameters);
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = cmd;
da.Fill(ds, "ds");
}
catch (System.Data.SqlClient.SqlException ex)
{
throw new Exception(ex.Message);
}
return ds;
}

}
private void PrepareCommand(SqlCommand cmd, string cmdText, SqlParameter[] cmdParms)
{
cmd.CommandText = cmdText;
cmd.CommandType = CommandType.Text ;
if (cmdParms != null)
{
foreach (SqlParameter parm in cmdParms)
cmd.Parameters.Add(parm);
}
}
ctto 2007-04-29
  • 打赏
  • 举报
回复
使用参数:SqlParameter
这样不但解决了你的问题,而且能防止SQL注入式攻击
yaojian524 2007-04-29
  • 打赏
  • 举报
回复
OracleParameter[] Parms = new OracleParameter[5];

Parms[0] = new OracleParameter("XXX", OracleType.Int32);
Parms[0].Value = yyy;
...........
Parms[4] = new OracleParameter("ZZZ", OracleType.Int32);
Parms[0].Value = sss;
用参数最好,不容易有漏洞
king1985_911 2007-04-29
  • 打赏
  • 举报
回复
就是SqlParameter param=new SqlParameter()

wangfeng666 2007-04-29
  • 打赏
  • 举报
回复
能参数怎么用呢?大家能给点具体的说法吗
dddd218 2007-04-29
  • 打赏
  • 举报
回复
用参数
zzfloat 2007-04-29
  • 打赏
  • 举报
回复
建议使用参数
wangfeng666 2007-04-29
  • 打赏
  • 举报
回复
实际这两问还是一个问题,第二个只是把sql语句在查询窗口执行试试。这样还是不行
Snowdust 2007-04-29
  • 打赏
  • 举报
回复
1.editor.text.Replace("'", "''");
2.where Id='24'改成where Id=24
hexinyu2005 2007-04-29
  • 打赏
  • 举报
回复
'替换成两个

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧