C# datatable 读取数据库

<add name="EM" connectionString="server=.;database=form;pwd=sa;uid=sa"/>
Database db = null;
DataTable dtb = null;
string sql = "select class from table1 where name = '张三' ";
dtb = db.GetDataTable(db.form,sql);
打个比方 想要取得class的值 string class =
Database封装好的 不知道Datatable怎么操作读出来
我知道怎么写进去 加个DataRow drRow ;
drRow[0] = '';
可是怎么读出呢..

public SqlConnection getcon()
{
//连接本地数据库 server=localhost
string M_str_sqlcon = @"server=localhost;database=表名;Integrated Security=SSPI";
SqlConnection myCon = new SqlConnection(M_str_sqlcon);
return myCon;
}

/// <summary>
/// 创建一个DataTable对象
/// </summary>
/// <param name="M_str_sqlstr">SQL语句</param>
/// <param name="M_str_table">表名</param>
/// <returns>返回DataTable对象</returns>
DataTable mytable = new DataTable();
public DataTable gettable(string M_str_sqlstr)
{
SqlConnection sqlcon = this.getcon();
SqlDataAdapter sqlda = new SqlDataAdapter(M_str_sqlstr, sqlcon);

sqlda.Fill(mytable);
sqlcon.Close();
sqlcon.Dispose();
return mytable;
}
调用该方法:
DataTable mytable = gettable("select * from 表名")追问

说了 ,麻烦请帮忙看一下

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-04-16
string test="";
string sql = "select class from table1 where name = '张三' ";
OleDbCommand cmd = new OleDbCommand(Sql, Connection);//第一个是SQL语句,Connection是链接字符串。当然你之前应该把它打开了。
OleDbDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
if(reader.Read())
{
test=reader["class"].ToString();
}
你可以测试下,备注我这里用的是ACCESS数据库的写法,如果你是SQL,自己改下就行。
把OleDb改成Sql的就可以了。追问

这样读的是几行呢

追答

因为你这里"select class from table1 where name = '张三' ";就写了一列啊,我这里就读取一列了。
如果要全部读取就这样写:
if(reader.HasRow)
{
while(reader.read())
{
test=reader["class"].ToString();
test2=reader["列名"].ToString();
//下面继续写,一直把你所有的列都读取出来为止
}
}

追问

我的意思是 class可能是有几行记录集啊 比如张三在 1班、2班、3班都有
test = "1班2班3班"?

追答

我没写完不好意思哈哈。test就获取一列,循环获取的,然后最后添加到集合,将集合返回给绑定控件即可。下面是我的代码,你参考一下,把SQL语句改成你的,列名改成你的即可。
public static List GetAllActivity()
{
List lact = new List();//这里定义的强类型的泛型集合
string str = "select * from activity order by ID desc";
using (OleDbDataReader odr = DBHelper.GetReader(str))
{
if (odr.HasRows)
{
while (odr.Read())
{
activity act = new activity();//这里是我定义的实体类,来接受数据用的,该实体类的属性和表中列的属性相匹配。当然你写的话就应该改成你自己的实体类。
act.Address1 = odr["Address1"].ToString();
act.Address2 = odr["Address2"].ToString();
act.CareatData = odr["CareatData"].ToString();
act.Content = odr["Content"].ToString();
act.ID = Convert.ToInt32(odr["ID"].ToString());
act.IsView = Convert.ToInt32(odr["IsView"].ToString());
act.Shen = odr["Shen"].ToString();
act.Shi = odr["Shi"].ToString();
act.Tel = odr["Tel"].ToString();
act.UserName = odr["UserName"].ToString();
lact.Add(act);//最后将每行数据都添加到集合。
}
}
return lact;
}
}
你还不明白我也没撤了。

第2个回答  2012-04-16
DataTable dtb = null;
string sql = "select class from table1 where name = '张三' ";
dtb = db.GetDataTable(db.form,sql);

string dtbStr=dtb.Rows[行下标][列下标].toString(); //两种写法,获得datatable中的某行某列的值
string dtbStr1=dtb.Rows[行下标]["列名"].toString();追问

谢谢 toString后还需要Trim吗
哪里找Datatable的用法啊 自己搜的不对

追答

Trim()方法只是去掉空格,加不加要看数据是否存在空格
关于Datatable的方法,网上太多了
大多很写的很繁琐
这个东西要自己积累了

本回答被提问者采纳
第3个回答  2012-04-16
dtb.Rows[0]["class"]就可以取出class的值了
第4个回答  2012-04-14
using System.Data.SqlClient;

public SqlConnection con = new SqlConnection("Data Source=SUIBIAN\\SQLEXPRESS;Initial Catalog=MySchool_new;Integrated Security=True");追问

说了 ,麻烦请帮忙看一下

C#中如何读取数据库中的某一列值,并将其逐条写入一个数组。
privateList<string>getGX(){ List<string>list=newList<string>();stringsql="select*fromCodeGX";DataTabledt=SqlHelper.getDataTable(sql);foreach(DataRowrowindt.Rows){ list.Add(row["GXName"].ToString());} returnlist;}

C#动态读取数据库(c罗)
myconn=new(str_conn);myconn.Open();\/\/3、创建连接,从数据库中读取数据 sql_Adapter=new(str_select,myconn);\/\/4、创建DataSet连接 DataSetdataset1=newDataSet();\/\/5、使用.Fill(DataSet_Name,index_name)方法将读取的数据存入DataSet定义的名为任意名的Datatable中,其中任意名表用于数据的标识(...

C#菜鸟求救!!Datatabel是 什么
数据读取 Command->DataReader 或 DataAdapter->DataSet 或 Xml->DataSet

C#连接数据库是用到的控件DataTable怎么访问其中具体的一个值,比如,第...
string s=Dt.Rows[0][0].toString();

c#读取数据库的表
OleDbConnection con = new OleDbConnection( " ");con.Open();object[] res = new object[]{null, "sfax ",null,null};DataTable dt = con.GetOleDbSchemaTable(OleDbSchemaGuid.Procedures,res);

C#怎么将datatable中的数据读到textbox中
DataTable dt=new DataTable();如果dt中有值则这样读 textbox1.Text= dt.Rows[0]["列名"].ToString();\/\/0代表第一行,以此类推

c#怎样读取DataTable中的数据
DataTable dt;foreach (DataRow row in dt.Rows){\/\/行 foreach (DataColumn col in dt.Columns) {\/\/列 row[col].Value.ToString(); }}我是这样遍历行列的。

在C#中怎样把数据库中的数据添加到DataTable中
\/\/ 从数据库中查询数据,返回DataTable DataTable Query(OleDbConnection conn, string sql){ OleDbDataAdapter adapter = new OleDbDataAdapter(sql, conn);DataSet ds = new DataSet();try { adapter.Fill(ds, "factors");} catch (Exception ex){ _log.Error("GetFactorsInfo() fail: ", ex);...

请教C#中如何读取数据库中的某一列值,并将其逐条写入一个数组。_百度知...
以SQL为例 建立conn 创建stringsql查询语句 定义一个adp 定义一个DS 定义一个array 通过adp.fill(ds)for(i=1;i<ds.table[0].rows.count;i++){ arry=add.item(控件,数据字段);} 最后将结果绑定到显示控件中,如 dropdownlist.datasource=arry;dropdownlist.databind();这里不给详细代码。你知道...

C#怎样实现读取数据库内容生成html
将动态的数据库内容用特殊的符号替换,这样就可以根据指定的对应将数据库的内容显示在静态页上了,你可以看看有关的软件如小孔子。

相似回答