c#中连接不到数据库,向诸位求解!

showayway 2012-05-12 11:04:35
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Data.OleDb;
using System.Data.SqlClient;


using System.Windows.Forms;

namespace 成语词典
{
public partial class loginForm : Form
{
public loginForm()
{
InitializeComponent();
}

string str = "Provider = Microsoft.Jet.OLEDB.4.0;" + "Data Source = D:\\showay.mdb";
OleDbConnection conn = new OleDbConnection();
OleDbDataReader result = null;
public bool loginus(string un, string pw)
{
conn.ConnectionString = str;
string sql = "select*from 用户表1 where 用户名 = '"+un+" 'and 密码 = '"+pw +"'";
OleDbCommand cmd = new OleDbCommand(sql, conn);
cmd.Connection.Open();
try
{
result = cmd.ExecuteReader();

}
catch(Exception )
{
MessageBox.Show("对不起!查询数据失败!","提示");
}
if(result !=null)
{
if (result.Read())
{ return true; };
}
result.Close();
cmd.Connection.Close();
return false;
}

private void button1_Click(object sender, EventArgs e)
{
string n = textBox1.Text.Trim();
string p = textBox2.Text.Trim();
if ((textBox1.Text != " ") & (textBox2.Text != " "))
{
if (loginus(n, p) == false)
{
MessageBox.Show("用户密码错误!");
return ;
}
DialogResult = DialogResult .OK ;
this .Hide ();
}
}

private void button2_Click(object sender, EventArgs e)
{
this.Close();
}
}
}
这是个用于用户登录的,我用的是Access数据库,我做了个以showay命名的数据库,里面放了密码,可执行时老提示找不到数据库文件,好纠结哦希望哪位指点指点。
...全文
194 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
http://download.csdn.net/detail/xianfajushi/4028787
程老师2088 2012-05-21
  • 打赏
  • 举报
回复
又是版本问题
YULIUYU 2012-05-21
  • 打赏
  • 举报
回复
找到原因了
showayway 2012-05-13
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 的回复:]
引用 13 楼 的回复:
楼主看看你的数据库后缀名对不对哦,我试了你的代码,可以找到数据库文件哦
请问你用的是什么数据库?
[/Quote]找到原因了,是我用的数据库版本后缀名不识别,用了另一个版本之后就行了,感激不尽呵呵
showayway 2012-05-13
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 的回复:]
楼主看看你的数据库后缀名对不对哦,我试了你的代码,可以找到数据库文件哦
[/Quote]请问你用的是什么数据库?
然鸟 2012-05-13
  • 打赏
  • 举报
回复
楼主看看你的数据库后缀名对不对哦,我试了你的代码,可以找到数据库文件哦
然鸟 2012-05-13
  • 打赏
  • 举报
回复
楼主的程序没有问题,最后3句只有在result为null的情况下才会被执行到,这样写很正确也很高效[Quote=引用 8 楼 的回复:]

引用 7 楼 的回复:
引用 3 楼 的回复:
楼主别的我不说,你看看这里,你怎么写的,这样岂不是总是返回false,那还执行个毛啊
if(result !=null)
{
if (result.Read())
{ return true; };
}
result.Close();
cmd.Connection.Close();
return false;}
我继续看了下……
[/Quote]
showayway 2012-05-13
  • 打赏
  • 举报
回复
感谢各位高手指点呵呵
tan70221 2012-05-13
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]

你看看我说错了没
[/Quote]是不是要加个else呢?
我爱白富美 2012-05-12
  • 打赏
  • 举报
回复
你看看我说错了没
我爱白富美 2012-05-12
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]
引用 3 楼 的回复:
楼主别的我不说,你看看这里,你怎么写的,这样岂不是总是返回false,那还执行个毛啊
if(result !=null)
{
if (result.Read())
{ return true; };
}
result.Close();
cmd.Connection.Close();
return false;
}
我继续看了下,貌似没有问题,您指点指点……
[/Quote]
请问最后的红色三条语句试试永远要执行 ,那请问是不是最后永远返回false,难道你还没看出来吗,或者我眼花了
showayway 2012-05-12
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
楼主别的我不说,你看看这里,你怎么写的,这样岂不是总是返回false,那还执行个毛啊
if(result !=null)
{
if (result.Read())
{ return true; };
}
result.Close();
cmd.Connection.Close();
return false;
}
[/Quote]我继续看了下,貌似没有问题,您指点指点
我爱白富美 2012-05-12
  • 打赏
  • 举报
回复
先把这个函数的错误处理了再看看吧,不行就F11一步步的看吧,总会看出问题的
我爱白富美 2012-05-12
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
路径应该没有问题,因为我做的另一个成语词典也是用的这个类似路径,可成语词典的可以用,这个登录的却不行,唉呵呵
[/Quote]
楼主好好看看我上面说的,你的这个函数永远返回false
public bool loginus(string un, string pw)
showayway 2012-05-12
  • 打赏
  • 举报
回复
路径应该没有问题,因为我做的另一个成语词典也是用的这个类似路径,可成语词典的可以用,这个登录的却不行,唉呵呵
我爱白富美 2012-05-12
  • 打赏
  • 举报
回复
楼主别的我不说,你看看这里,你怎么写的,这样岂不是总是返回false,那还执行个毛啊
if(result !=null)
{
if (result.Read())
{ return true; };
}
result.Close();
cmd.Connection.Close();
return false;
}

YULIUYU 2012-05-12
  • 打赏
  • 举报
回复
该有空格的地方注意要有空格
EnForGrass 2012-05-12
  • 打赏
  • 举报
回复
string str = "Provider = Microsoft.Jet.OLEDB.4.0;" + "Data Source = D:\\showay.mdb";mdb路径对不对?连接字符串对不对?

string sql = "select * from 用户表1 where 用户名 = '"+un+" 'and 密码 = '"+pw +"'";
你的sql语句该有空格的地方注意要有空格

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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