C#中,求一个返回类型为DataTable,并用SqlParameter传参的SqlHelper
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#中,求一个返回类型为DataTable,并用SqlParameter传参的SqlHelper相关的知识,希望对你有一定的参考价值。
我原来的是这样子的
public static DataTable getDateTable(string sqlString, SqlParameter[] parms)
GetConn();
DataTable dt = new DataTable();
SqlCommand cmd = new SqlCommand(sqlString);
if (parms != null)
foreach (SqlParameter p in parms)
cmd.Parameters.Add(p);
using (SqlDataAdapter sda = new SqlDataAdapter(cmd))
sda.Fill(dt);
cmd.Parameters.Clear();
return dt;
但是抛出异常:Fill: SelectCommand.Connection 属性尚未初始化
你的GetConn()返回的是什么?是connectionString还是 SqlConnection
如果是connectionString
public static DataTable getDateTable(string sqlString, SqlParameter[] parms)
GetConn();
SqlConnection conn = new SqlConnection(GetConn());
DataTable dt = new DataTable();
SqlCommand cmd = new SqlCommand(sqlString,conn);
if (parms != null)
foreach (SqlParameter p in parms)
cmd.Parameters.Add(p);
using (SqlDataAdapter sda = new SqlDataAdapter(cmd))
sda.Fill(dt);
cmd.Parameters.Clear();
return dt;
如果是SqlConnection
public static DataTable getDateTable(string sqlString, SqlParameter[] parms)
SqlConnection conn= GetConn();
DataTable dt = new DataTable();
SqlCommand cmd = new SqlCommand(sqlString,conn);
if (parms != null)
foreach (SqlParameter p in parms)
cmd.Parameters.Add(p);
using (SqlDataAdapter sda = new SqlDataAdapter(cmd))
sda.Fill(dt);
cmd.Parameters.Clear();
return dt;
参考技术B public static DataTable getDateTable(string sqlString, SqlParameter[] parms)
SqlConnection conn = new SqlConnection(connString);
SqlCommand cmd = new SqlCommand(sqlString, conn);
foreach (SqlParameter sqlParam in params)
if (sqlParam != null)
cmd.Parameters.Add(sqlParam);
try
conn.Open();
SqlDataAdapter sda = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
sda.Fill(dt);
conn.Close();
return dt;
catch
throw;
你的这个GetConn()应该是连接数据库吧,GetConn()可能只是连接了数据库,但是没有把数据库的连接信息赋给cmd,这样你的cmd执行过程根本不能在连接数据库的情况下完成你所要执行的操作。 参考技术C 说的很明显了 ,你的SqlCommand对象需要个SqlConnection对象,但是你没提供,我猜你的GetConn();是获取配置文件中的连接字符把,你这没有为Command对象连接到数据库,本回答被提问者采纳 参考技术D new SqlDataAdapter(sql语句,连接字符串) 第5个回答 2013-10-10 你的sqlconnection呢?
这个方法没看懂,求大神解释!
这个方法什么意思啊,如果想使用这个方法,怎么调用啊!
这个方法在CompanyService这个类里面
GetaddrAll方法返回的是一个DataTable类型的表,所以你调用它要先new一个DataTable的变量来接收,然后再用foreach 把这个表的每一行取出来就OK了。
先解释下这个方法:
public static DataTable GetaddrAll()
//定义一个公共访问的静态方法GetaddrAll,其中DataTable为返回值的类型,这个方法没有参数
string sql="select Caddr from company";
//定义一个string类型的变量sql,即要传入方法GetDataTable的参数,这是一条sql语句,是从数据表company中查找Caddr字段
try//尝试执行大括号中的代码,用于检查错误
return sqlDBHelper.GetDataTable(sql);
//调用sqlDBHelper中定义好的方法GetDataTable,并将sql语句传进去,然后return返回一个DataTable类型的数据表.
catch(Exception)//如果上面的尝试执行失败,则读出异常的原因,并在下面的throw中显示出来.
shrow;
下面说下调用的方法:
DataTable table= CompanyService.GetaddrAll();
//定义一DataTable类型的变量table ,接收GetaddrAll()方法的返回值
foreach (DataRow row in table.Rows)//遍历table中的每一行数据
string strCaddr=(string)row[0];//定义一个string变量strCaddr,用于接收每行查找到的Caddr
MessageBox.Show(strCaddr);//将strCaddr显示出来
希望能帮到你.满意采纳
参考技术A 这是到数据库去查数据,然后返回一个DataTable类型 如果调用的话 DataTable dt = GetaddrAll()就行了啊。追问DataTable dt = CompanyService GetaddrAll();
这样对吗?
不对 CompanyService c = new CompanyService ();
DataTable dt = c.GetaddrAll();
类名.静态方法([参数列表]); 参考技术C 这貌似是三层架构开发中BLL层中某个类中的一个静态方法,其实真正的方法是DAL层SqlDBHelper类中中的GetDataTable(sql) ,这是一个得到数据源的方法,需要一个参数(sql语句),返回一个DataTable类型数据追问
如果是三层还好说点,我学的就是三层,现在这个项目没有BLL
追答上面的这个方法就是一个桥梁,调用SqlDBHelper类中的一个GetDataTable(sql)(带有参数)的方法,返回一个DataTable 的数据。只是这是一个静态方法,这有什么看不懂的呀?
参考技术D 查询数据库中company表中的Caddr的信息,并以DataTable类型返回使用方法:
DataTable dt = CompanyService.GetaddrAll();
在dataGridView控件上显示 dataGridView1.DataSource=dt;
以上是关于C#中,求一个返回类型为DataTable,并用SqlParameter传参的SqlHelper的主要内容,如果未能解决你的问题,请参考以下文章
求问 C#如何将json字符串转为datatable 求详细解答
C#中如何将好几个 datatable 的信息整合到一个datatable里?或许不是简单的合并!!在线等!!30分悬赏!