C#中DataStructTableAdapter如何向有条件的SQL语句传递参数

hurricaboy 2011-08-11 09:27:57
各位高手,我用c#写了一个文件读写的程序,需求方希望我能把文件读取出来放到数据库库里,为了方便我用了VS自带的跟ACCSEE数据库连接的工具,也能顺利的将数据写入数据库,但是现在遇到问题了...当我想从数据库里面数据取出的时候遇到了两个问题:
1、我需要用到where子句去同一个城市的数据(即city=我需要的参数)我在配置SQL语句的时候不知道该怎么写
2、我想跳过这个,全部取出(select * from 表),不知道该怎么调用了,调用出来我用什么存储,存储完毕我取数据的时候应该如何一条一条取出
PS,好多代码网上也有,但是很是不清楚,我用了个实体类来存储数据,也想用泛型来存储,但是由于不会调用,也卡住了,求各位大哥大姐指导
DataStructTableAdapter data = new DataStructTableAdapter();//建立与数据库的连接对象
...全文
75 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
hurricaboy 2011-08-29
  • 打赏
  • 举报
回复
好吧,我自己解决了。。。
萧炎 2011-08-29
  • 打赏
  • 举报
回复
添加到ACCESS
-----------

public void AddData(string filePath)
{
string strConn = @"Provider = Microsoft.Ace.OLEDB.12.0; Data Source = " + filePath + ";Persist Security Info=False";

OleDbConnection conn = new OleDbConnection(strConn);
string strSql = "select * from EKInfo";

OleDbDataAdapter oda = new OleDbDataAdapter(strSql, conn);
DataSet ds = new DataSet();

conn.Open();
oda.Fill(ds, "EKInfo");
DataRow dr = ds.Tables["EKInfo"].NewRow();
dr["Url"] = "http://www.baidu.com";
dr["AddTime"] = DateTime.Now.ToShortDateString();
OleDbCommandBuilder cb = new OleDbCommandBuilder(oda);
oda.Update(ds, "EKInfo");
ds.AcceptChanges();

oda.Dispose();
conn.Dispose();
conn.Close();
}

萧炎 2011-08-29
  • 打赏
  • 举报
回复
读取EXCEL2007到datagridview
--------------------------

public void EcxelToDataGridView(string filePath, DataGridView dgv)
{
dgv.Columns.Clear();
dgv.DataSource = null;
//根据路径打开一个excel文件并将数据填充到dataset中
dgv.Columns.Add("Url", "网址");
string strConn = @"Provider = Microsoft.Ace.OLEDB.12.0; Data Source = " + filePath + "; Extended Properties = 'Excel 12.0;HDR = Yes; IMEX=1'";
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
string strExcel = "";
DataTable schemaTable = conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, null);
string tableName = schemaTable.Rows[0][2].ToString().Trim();
strExcel = "select * from ["+tableName+"]";
OleDbDataAdapter myCommand = new OleDbDataAdapter(strExcel, strConn);
DataSet ds = new DataSet();
ds.Clear();
myCommand.Fill(ds, "table1");
//根据DataGridView的列构造一个DataTable
DataTable td = ds.Tables[0];
try
{
#region 小问题
//if (td.Columns.Count > 1)
//{
dgv.Rows.Clear();
dgv.Columns.Clear();
foreach (DataGridViewColumn dgvc in dgv.Columns)
{
if (dgvc.Visible && dgvc.CellType != typeof(DataGridViewCheckBoxCell))
{
DataColumn dc = new DataColumn();
dc.ColumnName = dgvc.DataPropertyName;
dc.DataType = dgvc.ValueType;
td.Columns.Add(dc);
}
}

//根据excel的行逐一对上面的构造的datatable的列进行赋值
DataRow dr = td.NewRow();
for (int i = 0; i < ds.Tables["table1"].Rows.Count; i++)
{
DataRow excelRow = ds.Tables["table1"].Rows[i];
for (int j = 0; j < td.Columns.Count; j++)
{
dr[j] = excelRow[j];
i++;
}
}
td.Rows.Add(dr);
dgv.DataSource = td;
#endregion
}
catch (Exception)
{
MessageBox.Show("该表已存在你即将导入的excel文件...,请点击清空按钮重新导入...");
return;
}
finally
{
conn.Close();
}
}
萧炎 2011-08-29
  • 打赏
  • 举报
回复
LZ先读取数据放到datagridview中 然后在添加到数据库撒
hurricaboy 2011-08-29
  • 打赏
  • 举报
回复
求解答呀,都好几天了
hurricaboy 2011-08-12
  • 打赏
  • 举报
回复
2楼,你这个不对呀,我用的是VS自带的数据库连接软件,是DataStructTableAdapter,你这个是SqlDataAdapter,不一样的,我那个连接字符串是编写好的,不是在代码里写的
hui_play 2011-08-11
  • 打赏
  • 举报
回复
补充一句,数据最终添加到dataset里了,你直接遍历ds.table里的数据就可以了
hui_play 2011-08-11
  • 打赏
  • 举报
回复
初始化。
SqlConnection conn = new SqlConnection("server=hui;database=sfz;uid=sa;pwd=hui");
SqlCommand com = new SqlCommand();
DataSet ds = new DataSet();
SqlDataAdapter sda = new SqlDataAdapter();
SqlCommandBuilder scb = new SqlCommandBuilder();



private void Form1_Load(object sender, EventArgs e)
{

com.CommandText = "select * from stu_info";
com.Connection = conn;

sda.SelectCommand = com;
addDataSet();
dataGridView1.ReadOnly = true;
}

private void addDataSet()
{

scb.DataAdapter = sda;

sda.Fill(ds, "stuInfo");
dataGridView1.DataSource = ds;
dataGridView1.DataMember = "stuInfo";

}
hurricaboy 2011-08-11
  • 打赏
  • 举报
回复
55555,没人会嘛

110,537

社区成员

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

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

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