数据库非静态方法调用

rocket2010 2009-11-28 02:12:36
这个是我调用的类:
class Class1
{
这个是用非静态的了 public DataTable shuaxin(string cmdtxt)
{
SqlConnection objConn = new SqlConnection();
objConn.ConnectionString = "Data Source=20091124-2207\\SQLEXPRESS;Initial Catalog=StudentScore;Integrated Security=True";
objConn.Open();

SqlCommand objComm = new SqlCommand(cmdtxt, objConn);
SqlDataAdapter objAdapter = new SqlDataAdapter(objComm);
DataSet objDataSet = new DataSet();
objAdapter.Fill(objDataSet);
objConn.Close();

return (objDataSet.Tables[0]);
}
这个是我“查询”的按钮 的事件:

string Sqlstring = "SELECT stuID AS 编号,Number AS 学号 "
+ ",stuName AS 姓名, sex AS 性别,stuidentity AS 身份证号, stubrith AS 出生日期, className AS 班别,specialityName AS 专业,depaName AS 系 FROM studentInfo WHERE stuID ='" + txtSearchValue.Text.Trim() + "'";
objclass.shuaxin(Sqlstring);
DataSet sqldataset = new DataSet();
this.dataGridView2.DataSource = sqldataset.Tables[0];
      

int cornum = sqldataset.Tables[0].Rows.Count;//获取数据然后进行获取每一行的信息进行填充到text框里面
for (int i = 0; i < cornum; i++)
{
this.stuID.Text = sqldataset.Tables[0].Rows[i][0].ToString().Trim();
this.Number.Text = sqldataset.Tables[0].Rows[i][1].ToString().Trim();
this.stuName.Text = sqldataset.Tables[0].Rows[i][2].ToString().Trim();
this.sex.Text = sqldataset.Tables[0].Rows[i][3].ToString().Trim();

this.stuidentity.Text = sqldataset.Tables[0].Rows[i][4].ToString().Trim();
this.stubrith.Text = sqldataset.Tables[0].Rows[i][5].ToString().Trim();
this.className.Text = sqldataset.Tables[0].Rows[i][6].ToString().Trim();
this.specialityName.Text = sqldataset.Tables[0].Rows[i][7].ToString().Trim();
this.depaName.Text = sqldataset.Tables[0].Rows[i][8].ToString().Trim();
}

}

调试的结果是:“未将对象引用设置到对象的实例。”请问那个高手能帮帮忙修改下 如何才能解决使用非静态方法来做。。
谢谢了、、、、、、
...全文
78 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Mirana_NightShade 2009-11-28
  • 打赏
  • 举报
回复
up
wuyq11 2009-11-28
  • 打赏
  • 举报
回复
public SqlDataReader GetReader(string Sql,out SqlDataReader reader)
{
SqlCommand cmd = new SqlCommand(Sql, Connection);
reader = cmd.ExecuteReader();
Connection.Close();
Connection.Dispose();
return reader;
}
wuyq11 2009-11-28
  • 打赏
  • 举报
回复
DataTable dt=new Class1().shuaxin("");

int cornum = dt.Rows.Count;
foreach(DataRow dr in dt.Rows)
{
this.stuID.Text =dr[0].ToString().Trim();
}
最好使用sqldatareader
rocket2010 2009-11-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ppyyhh 的回复:]
objclass.shuaxin(Sqlstring);
              DataSet sqldataset = new DataSet();
              this.dataGridView2.DataSource = sqldataset.Tables[0];
这几句显示不对,shuaxin既然你这个方法shuaxin有返回值,
你应该这么写:DataTable dt= objclass.shuaxin(Sqlstring); 下面也不用DataSet,直接遍历这个dt就可以了。另外这个shuaxin方法,你也可以不填充DataSet,用DataTalbe就可以。

那请问下面的: for (int i = 0; i < cornum; i++)
{
this.stuID.Text = sqldataset.Tables[0].Rows[i][0].ToString().Trim();
this.Number.Text = sqldataset.Tables[0].Rows[i][1].ToString().Trim();
this.stuName.Text = sqldataset.Tables[0].Rows[i][2].ToString().Trim();
this.sex.Text = sqldataset.Tables[0].Rows[i][3].ToString().Trim();
这些应该怎么改写? 希望大家能帮我解决下 谢谢了!!
flyfly2008 2009-11-28
  • 打赏
  • 举报
回复
非静态方法要先定义,才能引用。
Class1 cs =new Class1();
cs.shuaxin(Sqlstring);
这样就可以用到了,试试
ppyyhh 2009-11-28
  • 打赏
  • 举报
回复
objclass.shuaxin(Sqlstring);
DataSet sqldataset = new DataSet();
this.dataGridView2.DataSource = sqldataset.Tables[0];
这几句显示不对,shuaxin既然你这个方法shuaxin有返回值,
你应该这么写:DataTable dt= objclass.shuaxin(Sqlstring); 下面也不用DataSet,直接遍历这个dt就可以了。另外这个shuaxin方法,你也可以不填充DataSet,用DataTalbe就可以。

111,120

社区成员

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

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

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