我写了如下语句:
string sql = "select * from members where userName=@name";
OleDbCommand cmd = new OleDbCommand(sql, con);
con.Open();
//防止注入式攻击
cmd.Parameters.Add("@name", OleDbType.VarChar, 50);
cmd.Parameters["@name"].Value = this.TextBox1.Text;
如果我现在在textbox1中输入的是"'"(逗号),那sql的值是什么?
不懂啊,那位大哥帮忙写一下~
比如说我想把"'"(逗号)变成" "(空格)
12 个解决方案
#1
用存储过程就可以防止了.
#2
能详细点么?解释一下
#3
用存储过程
#4
如何使用呢〉?
比如说我想把逗号变成空格?
比如说我想把逗号变成空格?
#5
使用参数,不要拼确定值。
有些问题使用存储过程无法解决。
有些问题使用存储过程无法解决。
#6
使用参数就是使用我刚才写的语句吧?可我在调试的过程中并没有发现有转换阿?
正确的语句该怎么写啊?
正确的语句该怎么写啊?
#7
如果输入",",生成的sql语句等价于:
"select * from members where userName=','"
如果要替换,可以
cmd.Parameters["@name"].Value = this.TextBox1.Text.Replace(",", " ")`;
"select * from members where userName=','"
如果要替换,可以
cmd.Parameters["@name"].Value = this.TextBox1.Text.Replace(",", " ")`;
#8
还是不行啊,我是这样写的
OleDbConnection con = new OleDbConnection ("server=hp;uid=sa;pwd=sa;database=test;Provider=SQLOLEDB");
string sql = "select * from members where userName=@userName";
OleDbCommand cmd = new OleDbCommand(sql, con);
con.Open();
//防止注入式攻击
cmd.Parameters.Add("@userName", OleDbType.VarChar, 50);
cmd.Parameters["@userName"].Value = this.TextBox1.Text.Replace("'", "");
sql的值还是select * from members where userName=@userName
哪里错了?急啊~
OleDbConnection con = new OleDbConnection ("server=hp;uid=sa;pwd=sa;database=test;Provider=SQLOLEDB");
string sql = "select * from members where userName=@userName";
OleDbCommand cmd = new OleDbCommand(sql, con);
con.Open();
//防止注入式攻击
cmd.Parameters.Add("@userName", OleDbType.VarChar, 50);
cmd.Parameters["@userName"].Value = this.TextBox1.Text.Replace("'", "");
sql的值还是select * from members where userName=@userName
哪里错了?急啊~
#9
使用参数,不使用字符串动态拼接成SQL语句,一般就没问题了
#10
没错,sqltext不会变。
cmd的parameters中会有增加的参数。
cmd的parameters中会有增加的参数。
#11
没什么错啊 本来使用存储过程就是看不到sqltext的变化的
#12
明白了~
多谢大家
现在发分去
多谢大家
现在发分去
#1
用存储过程就可以防止了.
#2
能详细点么?解释一下
#3
用存储过程
#4
如何使用呢〉?
比如说我想把逗号变成空格?
比如说我想把逗号变成空格?
#5
使用参数,不要拼确定值。
有些问题使用存储过程无法解决。
有些问题使用存储过程无法解决。
#6
使用参数就是使用我刚才写的语句吧?可我在调试的过程中并没有发现有转换阿?
正确的语句该怎么写啊?
正确的语句该怎么写啊?
#7
如果输入",",生成的sql语句等价于:
"select * from members where userName=','"
如果要替换,可以
cmd.Parameters["@name"].Value = this.TextBox1.Text.Replace(",", " ")`;
"select * from members where userName=','"
如果要替换,可以
cmd.Parameters["@name"].Value = this.TextBox1.Text.Replace(",", " ")`;
#8
还是不行啊,我是这样写的
OleDbConnection con = new OleDbConnection ("server=hp;uid=sa;pwd=sa;database=test;Provider=SQLOLEDB");
string sql = "select * from members where userName=@userName";
OleDbCommand cmd = new OleDbCommand(sql, con);
con.Open();
//防止注入式攻击
cmd.Parameters.Add("@userName", OleDbType.VarChar, 50);
cmd.Parameters["@userName"].Value = this.TextBox1.Text.Replace("'", "");
sql的值还是select * from members where userName=@userName
哪里错了?急啊~
OleDbConnection con = new OleDbConnection ("server=hp;uid=sa;pwd=sa;database=test;Provider=SQLOLEDB");
string sql = "select * from members where userName=@userName";
OleDbCommand cmd = new OleDbCommand(sql, con);
con.Open();
//防止注入式攻击
cmd.Parameters.Add("@userName", OleDbType.VarChar, 50);
cmd.Parameters["@userName"].Value = this.TextBox1.Text.Replace("'", "");
sql的值还是select * from members where userName=@userName
哪里错了?急啊~
#9
使用参数,不使用字符串动态拼接成SQL语句,一般就没问题了
#10
没错,sqltext不会变。
cmd的parameters中会有增加的参数。
cmd的parameters中会有增加的参数。
#11
没什么错啊 本来使用存储过程就是看不到sqltext的变化的
#12
明白了~
多谢大家
现在发分去
多谢大家
现在发分去