各位高手,我用c#写了一个文件读写的程序,需求方希望我能把文件读取出来放到数据库库里,为了方便我用了VS自带的跟ACCSEE数据库连接的工具,也能顺利的将数据写入数据库,但是现在遇到问题了...当我想从数据库里面数据取出的时候遇到了两个问题:
1、我需要用到where子句去同一个城市的数据(即city=我需要的参数)我在配置SQL语句的时候不知道该怎么写
2、我想跳过这个,全部取出(select * from 表),不知道该怎么调用了,调用出来我用什么存储,存储完毕我取数据的时候应该如何一条一条取出
PS,好多代码网上也有,但是很是不清楚,我用了个实体类来存储数据,也想用泛型来存储,但是由于不会调用,也卡住了,求各位大哥大姐指导
DataStructTableAdapter data = new DataStructTableAdapter();//建立与数据库的连接对象
1、我需要用到where子句去同一个城市的数据(即city=我需要的参数)我在配置SQL语句的时候不知道该怎么写
2、我想跳过这个,全部取出(select * from 表),不知道该怎么调用了,调用出来我用什么存储,存储完毕我取数据的时候应该如何一条一条取出
PS,好多代码网上也有,但是很是不清楚,我用了个实体类来存储数据,也想用泛型来存储,但是由于不会调用,也卡住了,求各位大哥大姐指导
DataStructTableAdapter data = new DataStructTableAdapter();//建立与数据库的连接对象
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";
}
-------------------------- 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();
}
}
-----------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();
}