这样写太不科学了吧?

jxjjljf 2009-09-03 01:49:03
string sqlstr = " insert into wlsg (wlsg_no) values ('" + TextBox2.Text + "') ";
string sqlstr2 = " insert into prpo (ebeln,bedat) values ('" + TextBox2.Text + "','" + sqrq.Text + "') ";
string sqlstr3 = " update lsh set now_lsh = '" + TextBox2.Text + "' where dep_no = '" + Request.Cookies["dep_no"].Value + "'";

SqlCommand sqlcom = new SqlCommand(sqlstr, conn);
SqlCommand sqlcom2 = new SqlCommand(sqlstr2, conn);
SqlCommand sqlcom3 = new SqlCommand(sqlstr3, conn);

conn.Open();
sqlcom.ExecuteNonQuery();
sqlcom2.ExecuteNonQuery();
sqlcom3.ExecuteNonQuery();
conn.Close();
...全文
232 30 打赏 收藏 转发到动态 举报
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
注册失败 2009-09-04
  • 打赏
  • 举报
回复
[Quote=引用楼主 jxjjljf 的回复:]
string sqlstr = " insert into wlsg (wlsg_no) values ('" + TextBox2.Text + "') ";
string sqlstr2 = " insert into prpo (ebeln,bedat) values ('" + TextBox2.Text + "','" + sqrq.Text + "') ";
string sqlstr3 = " update lsh set now_lsh = '" + TextBox2.Text + "' where dep_no = '" + Request.Cookies["dep_no"].Value + "'";

                    SqlCommand sqlcom = new SqlCommand(sqlstr, conn);
            SqlCommand sqlcom2 = new SqlCommand(sqlstr2, conn);
            SqlCommand sqlcom3 = new SqlCommand(sqlstr3, conn);

            conn.Open();
            sqlcom.ExecuteNonQuery();
            sqlcom2.ExecuteNonQuery();
            sqlcom3.ExecuteNonQuery();
            conn.Close();
[/Quote]

我觉得楼主还有一点是在说事务吧?

从代码里看,三个语句是要一起执行的
但是并没有使用事务来进行控制
jerry_zuo 2009-09-04
  • 打赏
  • 举报
回复
LZ 贴的代码 很雷人!
V68V6 2009-09-04
  • 打赏
  • 举报
回复
[Quote=引用 25 楼 jxyxhz 的回复:]
哈哈,没想到sp1234,居然会搜索下,搜到我的垃圾博客。。。

真是幸运。。。
[/Quote]

看来又一个SP1234的粉丝团成员
longzhu888126com 2009-09-03
  • 打赏
  • 举报
回复
都是高手啊,请大家多多指教,我是菜鸟!
wcqqq 2009-09-03
  • 打赏
  • 举报
回复
看到这些,,仿佛看到自己的昨天......
小_虎 2009-09-03
  • 打赏
  • 举报
回复
哈哈,没想到sp1234,居然会搜索下,搜到我的垃圾博客。。。

真是幸运。。。
lwp850210 2009-09-03
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 yuxuanji 的回复:]
容易被注入,不便于维护
参数化是指利用SqlParameter类,和用不用存储过程没关系

[/Quote]
·
ban83102 2009-09-03
  • 打赏
  • 举报
回复
同意
caixian 2009-09-03
  • 打赏
  • 举报
回复
对,不要写成这样,确实会有sql 注入攻击
jhdxhj 2009-09-03
  • 打赏
  • 举报
回复
ding
zhangxue841123 2009-09-03
  • 打赏
  • 举报
回复
顶..这样写不好..容易被注入
用参数吧
xsm545 2009-09-03
  • 打赏
  • 举报
回复
顶..这样写不好..容易被注入
eleven~ 2009-09-03
  • 打赏
  • 举报
回复
偷借楼上发的链接上的内容


sql中@参数应用 /// <summary>
/// 增加一条数据
/// </summary>
public int Add(ICE.Model.TBL_VALET_REQEUST model)
{
StringBuilder strSql=new StringBuilder();
strSql.Append("insert into TBL_VALET_REQEUST(");
strSql.Append("Order_ID,Ticket_No,Pick_Up_Time,Remark)");
strSql.Append(" values (");
strSql.Append("@Order_ID,@Ticket_No,@Pick_Up_Time,@Remark)");
strSql.Append(";select @@IDENTITY");
SqlParameter[] parameters = {
new SqlParameter("@Order_ID", SqlDbType.VarChar,50),
new SqlParameter("@Ticket_No", SqlDbType.VarChar,50),
new SqlParameter("@Pick_Up_Time", SqlDbType.DateTime),
new SqlParameter("@Remark", SqlDbType.Text)};
parameters[0].Value = model.Order_ID;
parameters[1].Value = model.Ticket_No;
if (model.Pick_Up_Time.ToString() == "0001-1-1 0:00:00")
{
parameters[2].Value = System.DBNull.Value;
}
else
{
parameters[2].Value = model.Pick_Up_Time;
}
parameters[3].Value = model.Remark;

object obj = DbHelperSQL.GetSingle(strSql.ToString(),parameters);
if (obj == null)
{
return 1;
}
else
{
return Convert.ToInt32(obj);
}
}
/// <summary>





下面是存储过程

SqlConnection myconnection = new SqlConnection(ConfigurationSettings.AppSettings[“MyConn"]);
myconnection.Open();//添加参数name

SqlCommand mycommand = new SqlCommand("checkmenber",myconnection);
mycommand.CommandType = CommandType.StoredProcedure;
SqlParameter ParameterName = new SqlParameter("@name",SqlDbType.Char);
ParameterName.Value = nametext.Text;
mycommand.Parameters.Add(ParameterName);

另一个例子

SqlCommand com = new SqlCommand("UserAddPro", con);
com.CommandType = CommandType.StoredProcedure;
SqlParameter pram1 = new SqlParameter("UserID", SqlDbType.BigInt);
SqlParameter pram2 = new SqlParameter("UserName", SqlDbType.NVarChar);
SqlParameter pram3 = new SqlParameter("UserPwd", SqlDbType.NVarChar);
SqlParameter pram4 = new SqlParameter("DptName", SqlDbType.NVarChar);
SqlParameter pram5 = new SqlParameter("PopeDom", SqlDbType.NVarChar);

pram1.Value = comboBoxAddID.Text;
pram2.Value = empNameStr;
pram3.Value = textBoxAddPwd1.Text;
pram4.Value = dptNameStr;
pram5.Value = comboBoxAddPope.Text;

com.Parameters.Add(pram1);
com.Parameters.Add(pram2);
com.Parameters.Add(pram3);
com.Parameters.Add(pram4);
com.Parameters.Add(pram5);
try
{
com.ExecuteNonQuery();
MessageBox.Show("添加成功");
this.userManageTableAdapter1.Fill(this.empInfManageDBDataSetUserManage.UserManage);
reader.Close();
con.Close();
}
catch
{
MessageBox.Show("添加失败");
reader.Close();
con.Close();
}

sj6071 2009-09-03
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 sp1234 的回复:]
谁说只有调用存储过程才能写成参数形式?
[/Quote]SP1234大声一喝
cheng_feng001 2009-09-03
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 wybxs2006 的回复:]
一般情况下用参数吧,Sqlparameter类型的
[/Quote]
我觉得用IDataParameter好些
cheng_feng001 2009-09-03
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 sp1234 的回复:]
谁说只有调用存储过程才能写成参数形式?
[/Quote]
呵呵,很多人是这样理解的。
阿彪兄 2009-09-03
  • 打赏
  • 举报
回复
一般情况下用参数吧,Sqlparameter类型的
tkscascor 2009-09-03
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 sp1234 的回复:]
谁说只有调用存储过程才能写成参数形式?
[/Quote]
up....
不用存储过程一样可以参数化传递的...
LutzMark 2009-09-03
  • 打赏
  • 举报
回复
容易被注入,不便于维护
参数化是指利用SqlParameter类,和用不用存储过程没关系
lovexilove 2009-09-03
  • 打赏
  • 举报
回复
楼上比较厉害,哈哈!
加载更多回复(10)

62,025

社区成员

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

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

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

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