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错误,
请高手指点一下

解决方案 »

  1.   

    与SQL Server的连接字符串的问题,人家机器数据库的密码不一定是12345,或者验证方式也不一样
      

  2.   

    private string ConnectionString= "Provider=sqloledb;Data Source=web;Initial Catalog=liming;User Id=sa;Password=12345;";
    错误.如楼上所说,数据库不同,用户名和密码也不一定就相同.你并没有成功连接数据库,又怎么进行判断呢?
      

  3.   

    但是,我是在同一工作组下面运行的我尝试在不同的机器上运行如下子令,可以正常运行的啊
    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();

    }
      

  4.   

    this.ds.Clear();
    this.da.Fill(ds,tempTableName);这里,填充数据集这里出错
      

  5.   

    知道原因了,数据库连接问题在局域网中有sql数据库服务器web,现在我要在任意一台机上连接数据库,
    连接字符串怎么写???请高手帮忙解决问题,分不够可以再加!
      

  6.   

    知道了数据库服务器名称和用户名密码,只要联网了,在哪台电脑上有什么关系吗?本来就可以访问的啊。
    "user id=sa;password=12345;initial catalog=liming;data source=web;"这是连接字符串,你试试
      

  7.   

    可是我连不了,是不是在SQL server端需要特殊设置啊?
      

  8.   

    或者是我的文件类型NTFS,权限有关呢?
      

  9.   

    1尝试用IP地址访问,局域网内的SQL Server2告诉你个简单的办法,窗体上拖放一个SqlConnection1控件,然后在连接向导里选责服务器和数据库,测试连接通过后在SqlConnection1的属性里找到并复制ConnectionString,删除(可选)SqlConnection1控件(此时可以直接使用SqlConnection1.Open()),将值赋给你的con.ConnectionString,然后再试。