| 发表于:2007-01-29 15:58:083楼 得分:0 |
贴代码? 呵呵~我都不知道从那里贴比较好啊,太长了.. .......能看看你的吗? condb就是里封装了几个command以及adapter的方法 在leave这个类里调用condb封装的方法进行了数据库的读写 在test里调用leave,并show了出来..结果就造成了上述情况 ///condb start/// using system; using system.data; using system.data.sqlclient; using system.web; namespace condb { /// <summary> /// class1 的摘要说明。 /// </summary> public class connectdb { private sqlconnection sqlcon; private sqlcommand cmd; private sqldataadapter dap; dataset ds; string sqlconstr = " "; public connectdb() { sqlconstr = getconstr(path1); } protected string getconstr(string path) { string constr; constr = @ "server=.;database=fff;user id=f;password=f; "; return constr; } //跟踪代码就是报错在这里,但是我想不出这里有什么问题 public bool condb() { try { sqlcon = new sqlconnection(sqlconstr); if(sqlcon.state.tostring() == "closed " ¦ ¦ sqlcon.state.tostring() == "closed ") { sqlcon.open(); } return true; } catch(exception err) { try { sqlcon = new sqlconnection(getconstr(@ "server=.;database=fff;user id=f;password=f; ")); if(sqlcon.state.tostring() == "closed " ¦ ¦ sqlcon.state.tostring() == "closed ") { sqlcon.open(); } return true; } catch { this.close(); return false; } } } public datatable querydata(string sqlstr) { try { dap = new sqldataadapter(sqlstr,sqlcon); ds = new dataset(); dap.fill(ds, "tab "); sqlcon.close(); return ds.tables[ "tab "]; } catch { sqlcon.close(); return null; } } public void close() { if(sqlcon.state.tostring() != "closed " ¦ ¦ sqlcon.state.tostring() != "closed ") { sqlcon.close(); } } } } //////////////test 这个的代码没有什么意义,本来就是用来测试的窗体 using leave; private void button1_click(object sender, system.eventargs e) { // leave.form1 a=new leave.form1(); // a.show(); } ////////leave/////////// using condb; private void button1_click(object sender, system.eventargs e) { cdb.condb();//这步不能通过 this.dtpass=cdb.querydata(@ "select * from leave where leave_id= ' "+txtleave.text+ " ' "); this.dtpass.tablename= "leave "; dgidetail.datasource=this.dtpass; cdb.close(); } | | |
|