导航
  • 主页
  • WinForm
  • WPF
  • 问答

查询ORACLE出错,这段代码有什么问题?

路人甲cw 2011-03-11 03:42:03
string username = txtUserName.Text.Trim();
string password = txtPassword.Text.Trim();

if (username == "" || password == "")
{
MessageBox.Show("用户名或密码不能为空!");
return;
}

string connstr = ConfigurationManager.ConnectionStrings["ConnStr"].ConnectionString;
using (OracleConnection conn = new OracleConnection(connstr))
{
conn.Open();
using (OracleCommand com = conn.CreateCommand())
{
com.CommandText = "select * from t_test where username=@UserName";
com.Parameters.Add("UserName",username);
using (OracleDataReader reader = com.ExecuteReader()) //执行到这句时异常:ORA-00936: 缺少表达式
{
if (!reader.Read())
{
MessageBox.Show("用户名错误!");
return;
}
com.CommandText = "select * from t_test where username=@UserName and password=@Password";
com.Parameters.Clear();
com.Parameters.Add("UserName", username);
com.Parameters.Add("Password", password);
if (Convert.ToInt32(com.ExecuteScalar())==0) //执行到这句时异常:ORA-00936: 缺少表达式
{
MessageBox.Show("密码错误!");
return;
}
MessageBox.Show("登录成功!");
}
}
}

如果不用带参查询,用拼接字符串的形式可以,不知道问题出在哪?
...全文
18 点赞 收藏 2
写回复
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
路人甲cw 2011-03-11
[Quote=引用 1 楼 airch 的回复:]

Oracle里传参数不是用@ 是用:
你把@替换成:就可以了
[/Quote]
感谢,搞了几个小时,原来是这个原因,跟PB差不多,谢谢了!
回复
Airch 2011-03-11
Oracle里传参数不是用@ 是用:
你把@替换成:就可以了
回复
发动态
发帖子
C#
创建于2007-09-28

10.4w+

社区成员

.NET技术 C#
申请成为版主
社区公告

全世界最好的语言,没有之一.