c#遍历表
场景:c# 遍历表的字段,该怎么处理
c# 遍历表的字段
我想获取数据库中一个表的几个字段,然后将这几个字段的值绑定在 dropdownlist里面,求解。
具体看下图

比如我想获取该表中第一行数据 chick1, chick2, chick3,,,, chick12的值,并绑定到 dropdownlist里,
如果 chick1, chick2, chick3,,,, chick12中 没有值的 就不获取这个值,只保存有值的!!!
小鸟,真心等待求解。。。。。 有代码尽量带上。谢谢
------解决方案--------------------
最快的速度,莫过于先把行转列存至一个临时表。
同这样的表,一开始就设计就有问题,应该设计为一对多的关系。
某一天,还在添加或是移除几个thickN,不管是在程序还是数据库,均需要修改。
------解决方案--------------------
ListView控件利用while遍历数据库数据
private void button1_Click(object sender, EventArgs e)
{
try
{
string P_Connection = string.Format(//创建数据库连接字符串
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.mdb;User Id=Admin");
OleDbConnection P_OLEDBConnection = //创建连接对象
new OleDbConnection(P_Connection);
P_OLEDBConnection.Open();//连接到数据库
OleDbCommand P_OLEDBCommand = new OleDbCommand(//创建命令对象
"select * from [book]",
P_OLEDBConnection);
OleDbDataReader P_Reader = //得到数据读取器
P_OLEDBCommand.ExecuteReader();
while (P_Reader.Read())//读取数据
{
ListViewItem lv = new ListViewItem(P_Reader[0].ToString());
lv.SubItems.Add(P_Reader[1].ToString());
lv.SubItems.Add(P_Reader[2].ToString());
listView1.Items.Add(lv);
}
P_OLEDBConnection.Close();//关闭数据库连接
}
catch (Exception ex)
{
MessageBox.Show(//弹出消息对话框
"数据读取失败!\r\n" + ex.Message, "错误!");
}
}
------解决方案--------------------
sql查询出表字段,然后再绑定到 dropdownlist
------解决方案--------------------
纠正下:dr[0]改成dr[i]
------解决方案--------------------
用行转换列非常之简单,我简单把你的sql语句写一下,你自己套用一下就可以了。
c# 遍历表的字段
我想获取数据库中一个表的几个字段,然后将这几个字段的值绑定在 dropdownlist里面,求解。
具体看下图
比如我想获取该表中第一行数据 chick1, chick2, chick3,,,, chick12的值,并绑定到 dropdownlist里,
如果 chick1, chick2, chick3,,,, chick12中 没有值的 就不获取这个值,只保存有值的!!!
小鸟,真心等待求解。。。。。 有代码尽量带上。谢谢
------解决方案--------------------
最快的速度,莫过于先把行转列存至一个临时表。
同这样的表,一开始就设计就有问题,应该设计为一对多的关系。
某一天,还在添加或是移除几个thickN,不管是在程序还是数据库,均需要修改。
------解决方案--------------------
ListView控件利用while遍历数据库数据
private void button1_Click(object sender, EventArgs e)
{
try
{
string P_Connection = string.Format(//创建数据库连接字符串
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.mdb;User Id=Admin");
OleDbConnection P_OLEDBConnection = //创建连接对象
new OleDbConnection(P_Connection);
P_OLEDBConnection.Open();//连接到数据库
OleDbCommand P_OLEDBCommand = new OleDbCommand(//创建命令对象
"select * from [book]",
P_OLEDBConnection);
OleDbDataReader P_Reader = //得到数据读取器
P_OLEDBCommand.ExecuteReader();
while (P_Reader.Read())//读取数据
{
ListViewItem lv = new ListViewItem(P_Reader[0].ToString());
lv.SubItems.Add(P_Reader[1].ToString());
lv.SubItems.Add(P_Reader[2].ToString());
listView1.Items.Add(lv);
}
P_OLEDBConnection.Close();//关闭数据库连接
}
catch (Exception ex)
{
MessageBox.Show(//弹出消息对话框
"数据读取失败!\r\n" + ex.Message, "错误!");
}
}
------解决方案--------------------
sql查询出表字段,然后再绑定到 dropdownlist
select name from syscolumns where id=object_id('表名')
------解决方案--------------------
纠正下:dr[0]改成dr[i]
public List<string> GetList()
{
string connStr = System.Configuration.ConfigurationManager.AppSettings["connStr"];
string cmdText = "select thick1,thick2,thick3,thick4,thick5,thick6,thick7,thick8,thick9,thick10,thick11,thick12 from [表名] where 条件";
List<string> columnList = new List<string>();
using (SqlConnection conn = new SqlConnection(connStr))
{
if (conn.State != ConnectionState.Open)
conn.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = cmdText;
cmd.CommandType = CommandType.Text;
using (SqlDataReader dr = cmd.ExecuteReader())
{
while (dr.Read())//循环行,只有一行把while改成if
{
for (int i = 0; i <= 12; i++)//循环列
{
if (dr[i] != DBNull.Value)
{
string item = Convert.ToString(dr[i]);
if(!string.IsNullOrWhiteSpace(item)&&!columnList.Contains(item))//空检查,并检查是否已经存在于list中,不存在则添加
columnList.Add(item);
}
}
}
}
cmd.Parameters.Clear();
}
return columnList;
}
------解决方案--------------------
用行转换列非常之简单,我简单把你的sql语句写一下,你自己套用一下就可以了。
--> 测试数据:[TB]
if object_id('[TB]') is not null drop table [TB]
go
create table tb(product_tye varchar(10),id int ,thick1 int ,thick2 int,thick3 int )
insert into tb
select 'S','1995','1','2','3'
union all
select 'S','1996','4','5','6'
go
select id, v from tb
unpivot
(
v for c in (thick1,thick2,thick3)
)u where id='1995'