using System;
using System.Data;
using System.Data.SqlClient;
namespace AssetManager.DBConnection
{
/// <summary>
/// ConnectionClass 的摘要说明。
/// </summary>
public class ConnectionClass
{
private SqlConnection objSqlConnection;
private SqlDataAdapter objSqlDataAdapter;
private DataTable objDataTable;
public ConnectionClass()
{
//
// TODO: 在此处添加构造函数逻辑
//
this.objSqlConnection=new SqlConnection("server=.;database=manager;uid=sa;pwd=123");
this.objSqlConnection.Open();
}
public int loginCheck(string strSql)
{
this.objSqlDataAdapter=new SqlDataAdapter();
this.objSqlDataAdapter.SelectCommand=new SqlCommand(strSql,this.objSqlConnection);
this.objDataTable=new DataTable();
this.objSqlDataAdapter.Fill(this.objDataTable);
int count=0;
count=this.objDataTable.Rows.Count;
return count;
}
}
}
![C# 中的未将对象引用设置到对象的实例 网上报税引用对象实例](http://img.413yy.cn/images/01111101/01124343t01f95ba85b7cce94b3.png)
在窗体的按钮事件中的代码如下:
private void btnLogin_Click(object sender, System.EventArgs e)
{
try
{
ConnectionClass conClass=new ConnectionClass();
this.loginName=this.txtName.Text.Trim();
this.pwd=this.txtPwd.Text.Trim();
string strSql="select * from OPERATOR where name='"+this.loginName+"' and password='"+this.pwd+"'";
int count=conClass.loginCheck(strSql);
if(count>0)
{
MessageBox.Show("登录成功");
}
else
{
MessageBox.Show("登录错误");
}
conClass.closeCon();
}
catch(Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
每次点击按钮出发事件时都会报未将对象引用设置到对象的实例,且错误出在SqlConnection的open()方法处,这程序开始时就有这个毛病,我实在找不到错在哪里,后来不知怎的有一次好了,但后来又出问题,简直莫名其妙,拜托各位帮帮忙。
答案:
这是由于SqlConnection对象创建没有成功,objSqlConnection还是null值,所以你每次调用它的Open()方法都会报出未将对象引用设置到对象的实例的异常。
分析一:
数据库连接字符串问题,由于提供的数据库连接字符串不正确,而作为SqlConnection类的构造函数参数,objSqlConnction不能成功创建。你需要做的是检查一下数据库连接字符串,看看数据库连接和用户名密码是否正确?
分析二:
由于objSqlConnection第一次创建后调用了Open()方法,但是一直没有显式的关闭它,试试在你调用完loginCheck函数后,关闭数据库连接,objSqlConnection.Close();