用户登录验证问题----请高手帮忙

vgy12304 2006-03-02 08:16:33
login.cs文件

public class loginfrm : System.Windows.Forms.Form
{
public static bool blCanLogin = false; //记录能否检验是否通过
public static string strUser = ""; //记录用户名
public static string strDepartment = "";//记录通过者权限

private DataSet ds = new DataSet();
private DataTable myTable;
private DataRow myRow;
private string sendStrSQL = "SELECT * from sunsoft";
private System.Windows.Forms.TextBox txt_ID;
private System.Windows.Forms.TextBox txt_Pwd;
private System.Windows.Forms.Button btnok;
private System.Windows.Forms.Label lbname;
private System.Windows.Forms.Label lbpw;
private System.Windows.Forms.Button btnquit;
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.Container components = null;

static void Main()
{


Application.Run(new loginfrm());
}
public loginfrm()
{
//
// Windows 窗体设计器支持所必需的
//
InitializeComponent();
LinkDataBase link = new LinkDataBase();
string sendTableName = "sunsoft1";
this.ds = link.SelectDataBase(sendStrSQL,sendTableName);
this.myTable = ds.Tables[0];
//
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
//
}

/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}


/// <summary>
/// 应用程序的主入口点。
/// </summary>




private void btnok_Click(object sender, System.EventArgs e)
{
for (int i=0;i<myTable.Rows.Count;i++)
{
this.myRow = myTable.Rows[i];
//只有当输入的用户名和密码同时对应上数据库中记录时,才能通过校验
if (myRow[0].ToString().Trim()==this.txt_ID.Text.ToString().Trim() && myRow[1].ToString().Trim()==this.txt_Pwd.Text.ToString().Trim())
{
blCanLogin = true;
strUser = myRow[0].ToString().Trim();//保存用户名
strDepartment = myRow[1].ToString().Trim();//保存权限
this.Close();//关闭窗体
return;
}
}
MessageBox.Show( "您输入的用户号或密码不正确!","系统提示");
return;






}



LinkDataBase.cs文件中


public class LinkDataBase
{

private string strSQL;
//与SQL Server的连接字符串设置
private string ConnectionString= "Provider=sqloledb;Data Source=web;Initial Catalog=liming;User Id=sa;Password=12345;";

private OleDbConnection myConnection;

private OleDbCommandBuilder OleDbCmdBld;
private DataSet ds = new DataSet();
private OleDbDataAdapter da;

public LinkDataBase()
{
//
// TODO: 在此处添加构造函数逻辑
//
}

///////////////////////////////// 操作脱机数据库(创建了该类的实例时直接用) /////////////////////////////////////////////////////

//根据输入的SQL语句检索数据库数据
public DataSet SelectDataBase(string tempStrSQL,string tempTableName)
{
this.strSQL = tempStrSQL;
this.myConnection = new OleDbConnection(ConnectionString);
this.da = new OleDbDataAdapter(this.strSQL,this.myConnection);
this.ds.Clear();
this.da.Fill(ds,tempTableName);
return ds;//返回填充了数据的DataSet,其中数据表以tempTableName给出的字符串命名
}

//数据库数据更新(传DataSet和DataTable的对象)
public DataSet UpdateDataBase(DataSet changedDataSet,string tableName)
{
this.myConnection = new OleDbConnection(ConnectionString);
this.da = new OleDbDataAdapter(this.strSQL,this.myConnection);
this.OleDbCmdBld = new OleDbCommandBuilder(da);
this.da.Update(changedDataSet,tableName);
return changedDataSet;//返回更新了的数据库表
}

///////////////////////////////// 直接操作数据库(未创建该类的实例时直接用) /////////////////////////////////////////////////////

//检索数据库数据(传字符串,直接操作数据库)
public DataTable SelectDataBase(string tempStrSQL)
{
this.myConnection = new OleDbConnection(ConnectionString);
DataSet tempDataSet = new DataSet();
this.da = new OleDbDataAdapter(tempStrSQL,this.myConnection);
this.da.Fill(tempDataSet);
return tempDataSet.Tables[0];
}

//数据库数据更新(传字符串,直接操作数据库)
public int UpdateDataBase(string tempStrSQL)
{
this.myConnection = new OleDbConnection(ConnectionString);
//使用Command之前一定要先打开连接,后关闭连接,而DataAdapter则会自动打开关闭连接
myConnection.Open();
OleDbCommand tempSqlCommand = new OleDbCommand(tempStrSQL,this.myConnection);
int intNumber = tempSqlCommand.ExecuteNonQuery();//返回数据库中影响的行数
myConnection.Close();
return intNumber;
}
}
}


在本机环境中运行正确,可是到了别人机器上运行出错oledb错误,
请高手指点一下
...全文
222 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
aSalt 2006-03-06
  • 打赏
  • 举报
回复
1尝试用IP地址访问,局域网内的SQL Server

2告诉你个简单的办法,窗体上拖放一个SqlConnection1控件,然后在连接向导里选责服务器和数据库,测试连接通过后在SqlConnection1的属性里找到并复制ConnectionString,删除(可选)SqlConnection1控件(此时可以直接使用SqlConnection1.Open()),将值赋给你的con.ConnectionString,然后再试。
vgy12304 2006-03-06
  • 打赏
  • 举报
回复
或者是我的文件类型NTFS,权限有关呢?
vgy12304 2006-03-04
  • 打赏
  • 举报
回复
可是我连不了,是不是在SQL server端需要特殊设置啊?
vgy12304 2006-03-03
  • 打赏
  • 举报
回复
this.ds.Clear();
this.da.Fill(ds,tempTableName);

这里,填充数据集这里出错
yz1199 2006-03-03
  • 打赏
  • 举报
回复
你设置个断点,捕捉异常,看时候哪一步出错
vgy12304 2006-03-03
  • 打赏
  • 举报
回复
但是,我是在同一工作组下面运行的

我尝试在不同的机器上运行如下子令,可以正常运行的啊
private void loginfrm_Load(object sender, System.EventArgs e)
{
System.Data.OleDb.OleDbConnection con=new OleDbConnection();
con.ConnectionString = "Provider=SQLOLEDB;Data Source=web;Initial Catalog=liming;User Id=sa;Password=12345;";



try
{
con.Open();
MessageBox.Show("数据库连接成功","提示");
}
catch
{
MessageBox.Show("数据库连接失败","提示");
}
con.Close();
con.Dispose();

}
yz1199 2006-03-03
  • 打赏
  • 举报
回复
private string ConnectionString= "Provider=sqloledb;Data Source=web;Initial Catalog=liming;User Id=sa;Password=12345;";
错误.如楼上所说,数据库不同,用户名和密码也不一定就相同.你并没有成功连接数据库,又怎么进行判断呢?
xiaowen01 2006-03-03
  • 打赏
  • 举报
回复
知道了数据库服务器名称和用户名密码,只要联网了,在哪台电脑上有什么关系吗?本来就可以访问的啊。
"user id=sa;password=12345;initial catalog=liming;data source=web;"这是连接字符串,你试试
vgy12304 2006-03-03
  • 打赏
  • 举报
回复
知道原因了,数据库连接问题

在局域网中有sql数据库服务器web,现在我要在任意一台机上连接数据库,
连接字符串怎么写???

请高手帮忙解决问题,分不够可以再加!
hedongfu 2006-03-02
  • 打赏
  • 举报
回复
与SQL Server的连接字符串的问题,人家机器数据库的密码不一定是12345,或者验证方式也不一样

110,535

社区成员

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

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

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