c#连接sql数据库错误 :在没有任何数据时进行无效的读取尝试

以下是我做的一个点菜系统登陆界面的登陆按钮cilik事件代码

Form3 fop = new Form3();

SqlConnection mySqlConnection = new SqlConnection();
mySqlConnection.ConnectionString = "data source=.;initial catalog=点菜系统数据库;Integrated Security=SSPI";

string cmdText ="select USER_PWD from 登录 where USER_NAME='"
+ textBox1.Text.ToString() + "'";

SqlCommand cmd = new SqlCommand(cmdText,mySqlConnection);

try
{
mySqlConnection.Open();
SqlDataReader dr = cmd.ExecuteReader();

if (dr[0].ToString() == textBox2.Text.ToString())
{
fop.Show();

}

dr.Close();
mySqlConnection.Close();
this.Close();
}
catch (Exception ex) { MessageBox.Show(ex.Message );}

结果调试的时候 输入正确的已在sql数据库中预置的账号和密码,点击登陆后显示
在没有任何数据时进行无效的读取尝试
求大神解答我错在哪了 谢谢了

第1个回答  推荐于2016-11-22
你这个代码改下,这样写错误,输不出数据好不好,我的代码发给你,自己去改下,2个登录页面
Console.Write("请输入注册帐号:");
string name = Console.ReadLine();
Console.Write("请输入密码:");
string password = Console.ReadLine();
using (SqlConnection conn = new SqlConnection(@"Data Source=wuxiang-pc;AttachDbFilename=|DataDirectory|Database1.mdf;Integrated Security=True;User Instance=True"))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{ cmd.CommandText = "select *from admin where name=@name and password=@password";//这里不能拼接数据,拼接后有数据注入漏洞
cmd.Parameters.Add(new SqlParameter("name", name));
cmd.Parameters.Add(new SqlParameter("password", password));
int i = Convert.ToInt16(cmd.ExecuteScalar());
{
if (i > 0)
{
Console.WriteLine("登录成功!");
}
else
{
Console.WriteLine("密码和帐号错误!");
}
}
第二种数据连接,
/*Console.Write("请输入帐号:");
string name= Console.ReadLine();
Console.Write("请输入密码:");
string password = Console.ReadLine();
using (SqlConnection conn = new SqlConnection(@"Data Source=wuxiang-pc;AttachDbFilename=|DataDirectory|Database1.mdf;Integrated Security=True;User Instance=True"))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "select* from admin where name='"+name+"'";
SqlDataReader a = cmd.ExecuteReader();
if (a.Read())
{
string dbpassword = a.GetString(a.GetOrdinal("password"));
if (password == dbpassword)
Console.Write("登录成功!");
else
{
Console.Write("密码错误!");
}
}
else
{
Console.Write("帐号不存在!");
}
}*/
你上面代码是看国内书看多了写的代码是吗?
国内书代码有很多错误和漏洞,我这个是一个标准的登录页面写法,
那个conn.close()和try和catch不用写,使用Using来比那个好
using是释放资源。数据库继承了一个d什么接口,都可以用Using来代替
还有io的那些类都可以使用using 后面file类都可以用Using。他们和数据库一样
继承了那个d的接口,这些在c#高级编程里有介绍,他们书上没有try的catch语法本回答被提问者采纳
第2个回答  2011-11-16
if (dr[0].ToString() == textBox2.Text.ToString())
dr[0]要求sql至少返回一条数据.

先判断sql是否返回数据再访问dr[0],
if(dr.HasRows)
{
dr.Read();
if (dr[0].ToString() == textBox2.Text.ToString())
{
fop.Show();

}

}

在没有任何数据时进行无效的读取尝试。C#。
注释掉,或者删掉 因为Read方法直接是读取一行并将游标下移一行然后返回是否还存在下一行的结果,你前面都P_dr.Read()了,到你if(P_dr.Read())的时候已经没有记录了

C#数据库编程,“在没有任何数据时进行无效的读取尝试”算什么错误...
\/\/首先应该先检查数据表是否有数 if (sdr.HasRows){ \/\/其次,数据要先读出来 if( sdr.Read()){ this.textBox1.Text=Convert.ToString(sdr["sid"]);...} } sdr.Close();con.Close();

C#.NET “在没有任何数据时进行无效的读取尝试”
SqlConnection conn = new SqlConnection("server=;uid=;pwd=;database=");conn.Open();Label1.Text = Request.Params["ID"].ToString();int id = Convert.ToInt32(Label1.Text);string sql = "select NewsContent from News_Content where ID='"+ id + "'";SqlCommand mycmd = new Sql...

C# 在没有任何数据时进行无效的读取尝试
string sql = "select * from UserStates where id=@id";SqlParameter[] parameter = new SqlParameter[] { new SqlParameter("@id",id)};把这两句的位置交换一下 试一试啦。

...operationexception 在没有任何数据时进行无效的读取尝试_百度...
var reader=sql_nation.sql_read(x);if(reader.HasRows){ while(reader.Read()) { \/\/ }}

C#与sql数据库连接问题
问题一:已成功与服务器建立连接,但是在登录过程中发生错误。 (provider: 共享内存提供程序, error: 0 - 管道的另一 端上无任何进程。用windows身份登录management studio,点击站点属性,将安全选项更改为:windows 和sql 混合身份登录,解决。问题二:sql 2005企业管理器登录时选用windows身份验证一切顺利...

c#连接不到sql sever数据库是为什么
回答:楼主你好: 我们最初接触数据库,以为只要将数据库文件MDB.mdf放在windows窗体项目的debug文件夹下就可以了,就是跟项目生成的可执行程序放在同一文件夹下就可以了,然后运行可执行文件,点击按钮就能连接到那个文件。然而实则不然,必须将MDB.mdf附加到SSMS服务器上才行,其实MDB.mdf的路径倒是次要的,所以...

...提示这个 在没有任何数据时进行无效的读取尝试。
reader["replyid"].ToString!=0 这句你改成reader["replyid"].ToString!="0"试试看

c#编程时,添加SQL数据库系统却提示说“用户没有权限执行此操作”_百度...
极有可能是数据库实例的用户没有设置相应的权限,先按照楼上的朋友的说法做,实在搞不定就重装数据库吧,重装的时候记得一定要选择用自定义用户作为默认用户,千万不要用windows用户。

C#在连接SQL2005数据库,在建立服务器的连接时出错
1,检查你SQL的服务是不是开启了 端口是不是1433,2,SQL2005能否正常打开(我是说打开SQL2005),能否看到你要连接的数据库以及相关表。3,检查你的连接字符串,数据库是实例名,用户名,密码。出你这问题一般就是这些原因!在没别的

相似回答