我在使用ASP.NET+C#操作数据库遇到点问题,HELP

SnApnet 2003-09-12 09:13:52
在aspx页里放了几个TextBox
然后在.cs文件里写代码,目的是实现加入一条新记录
写入数据库代码如下:
================================================================================private void Write_Click(object sender, System.EventArgs e)
{
string conStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath(".") + "..\\DataBase\\Gbook.mdb";
string insertStr = "Insert into Gbook (Title,Username,Sex,Email,Oicq,Homepage,HeartPic,HeadPic,Content,Uptime) Values ('"
+ title.Text + "','"
+ Username.Text + "','"
+ Sex.SelectedItem.Text + "','"
+ mail.Text + "','"
+ OICQ.Text + "','"
+ homepage.Text + "','"
+ Pic.SelectedItem.Value + "','"
+ Head.SelectedItem.Value + "','"
+ content.Text + "','"
+ DateTime.Now.ToString() + "')";
OleDbConnection conn = new OleDbConnection(conStr);
conn.Open();
OleDbCommand comm = new OleDbCommand(insertStr,conn);
comm.ExecuteNonQuery();
conn.Close();
Response.Redirect("Default.aspx");
}
================================================================================

其实添加记录正常,只是在content.Text添加比如“ ' ” 之类的东西,就会出错。写两个''正常,但是前台只显示了一个 ' ,单单只写一个 '的话,就会
提示 语法错误 (操作符丢失) 。
请问怎么解决,最好能详细说明,谢谢!
...全文
111 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
SnApnet 2003-09-12
  • 打赏
  • 举报
回复
感谢saucer(思归)
问题解决了。谢谢
jjcccc 2003-09-12
  • 打赏
  • 举报
回复
sql server 中的转义字符为',改成下面这样试试
string insertStr = "Insert into Gbook (Title,Username,Sex,Email,Oicq,Homepage,HeartPic,HeadPic,Content,Uptime) Values ('"
+ title.Text + "','"
+ Username.Text + "','"
+ Sex.SelectedItem.Text + "','"
+ mail.Text + "','"
+ OICQ.Text + "','"
+ homepage.Text + "','"
+ Pic.SelectedItem.Value + "','"
+ Head.SelectedItem.Value + "','"
+ content.Text.Replace("'","''") + "','"
+ DateTime.Now.ToString() + "')";
OleDbConnection conn = new OleDbConnection(conStr);
conn.Open();
OleDbCommand comm = new OleDbCommand(insertStr,conn);
comm.ExecuteNonQuery();
conn.Close();
Response.Redirect("Default.aspx");
}
zhongkeruanjian 2003-09-12
  • 打赏
  • 举报
回复
用\转义一下,试试
saucer 2003-09-12
  • 打赏
  • 举报
回复
sorry, replace comm.Paramters with comm.Parameters.
saucer 2003-09-12
  • 打赏
  • 举报
回复
that is classic SQL inject attack, either you have to filter the text or use a paramterized query

string insertStr = "Insert into Gbook (Title,Username,Sex,Email,Oicq,Homepage,HeartPic,HeadPic,Content,Uptime) Values (?,?,?,?,?,?,?,?,?,?)";

OleDbConnection conn = new OleDbConnection(conStr);
conn.Open();
OleDbCommand comm = new OleDbCommand(insertStr,conn);
comm.Paramters.Add("@Title",title.Text);
comm.Paramters.Add("@User",Username.Text);
comm.Paramters.Add("@Sex",Sex.SelectedItem.Text);
comm.Paramters.Add("@Email",mail.Text);
comm.Paramters.Add("@Oicq",OICQ.Text);
comm.Paramters.Add("@Homepage",homepage.Text );
comm.Paramters.Add("@HeartPic",Pic.SelectedItem.Value);
comm.Paramters.Add("@HeadPic",Head.SelectedItem.Value);
comm.Paramters.Add("@Content",content.Text);
comm.Paramters.Add("@Uptime",DateTime.Now.ToString());//comm.Paramters.Add("@Uptime",DateTime.Now); //>>

comm.ExecuteNonQuery();
conn.Close();
Response.Redirect("Default.aspx");

SnApnet 2003-09-12
  • 打赏
  • 举报
回复
up

62,046

社区成员

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

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

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

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