110,538
社区成员
发帖
与我相关
我的任务
分享
OleDbConnection conn;
OleDbDataReader reader;
/// <summary>
/// 打开数据连接
/// </summary>
/// <param name="sql">数据库连接语句</param>
public void open(String sql)
{
conn = new OleDbConnection(sql);
conn.Open();
}
public bool sql(String sql)
{
OleDbCommand comm = new OleDbCommand();
comm.CommandText = sql;
comm.Connection = conn;
reader=comm.ExecuteReader();
rd = reader.Read();
reader.Close();
return rd;
}
public void inquire(Object text)
{
object lockojb = new object();
//lock锁
lock (lockojb)
{
//去掉条形码ID的条码号
// da.open(Class1.strconn);
String t=text.ToString().Substring(1);
String ID=text.ToString().Substring(0,1);
String select_one = "select * from tables where 条码号='" +t+ "'";
if (da.sql(select_one)==false)
{
//省略了具体的处理过程
}
public bool sql(String sql)
{
OleDbCommand comm = new OleDbCommand();
comm.CommandText = sql;
comm.Connection = conn;
reader=comm.ExecuteReader();
rd = reader.Read();
reader.Close();
return rd;
}
都下了断点 当我按下按钮后代码走进了conn.open() 点开看conn的状态是open 表示已经打开了没错 单我按下F5断点执行到OleDbCommand comm = new OleDbCommand()是我在把鼠标移到conn上看到conn是空的null 然后我想了下把conn = new OleDbConnection(sql);修改为conn.ConnectionString=sql; 把new OleDbConnection() 放到了clss的下面而不是在方法内new他的实例
当我再次断点执行的时候conn已经不为空了 但是他的start状态显示为close关闭着的 private void button5_Click(object sender, EventArgs e)
{
cl.openD();
timer1.Enabled = true;
timer2.Enabled = true;
timer3.Enabled = true;
}
通过点击按钮条用了BLL层的openD()方法
而BLL层有这么一个对应的方法 public void openD()
{
da.open(Class1.strconn);
}
da.open 就是DAL层的conn.open();Class1.strconn是一个静态string存就的是数据库连接语句