请教SQL问题 我有两张表,A表和B表,两张表之间建了关系,我想同时为两张表插入数据,我的数据是从excel中导入进来的,一个excel表中包含了两个表的字段,但是现在不知道用什么方法来做,请高手指教 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我想到的就是只能寫兩條insert語句insert into A (file1,file2...) values(value1,value2);insert into B (file1,file2...) values(value1,value2);看樓下更好的方法! 只能从EXCEL中取出数据,将数据按某种规律剥离后再插入表中 这个比较好处理.1.先从excel中取出数据,如下:public DataSet GetDataFrowExcel( ) { OpenFileDialog openFileDialog = new OpenFileDialog(); openFileDialog.Filter = "Excel files(*.xls)|*.xls"; DataSet dataSet = new DataSet(); if (openFileDialog.ShowDialog() == DialogResult.OK) { OleDbConnection oleDbConn = null; OleDbDataAdapter oleAdapter = null; try { FileInfo fileInfo = new FileInfo(openFileDialog.FileName); string filePath = fileInfo.FullName; string connExcel = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Extended Properties=Excel 8.0"; oleDbConn = new OleDbConnection(connExcel); oleDbConn.Open(); //获取excel表 DataTable dataTable = oleDbConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); //获取sheet名,其中[0][1]...[N]: 按名称排列的表单元素 string tableName = dataTable.Rows[0][2].ToString().Trim(); tableName = "[" + tableName.Replace("'", "") + "]"; //利用SQL语句从Excel文件里获取数据 string selStr = "select excel列1,excel列2 from "+ tableName"; oleAdapter = new OleDbDataAdapter(selStr, connExcel); oleAdapter.Fill(dataSet); oleDbConn.Close(); oleDbConn.Dispose(); oleAdapter.Dispose(); } catch { oleDbConn.Close(); oleDbConn.Dispose(); oleAdapter.Dispose(); MessageBox.Show("获取数据出错,请确定选择的文件是否正确"); dataSet = null; } } else { dataSet = null; } return dataSet; }2. 循环取出来的dataset. privite void InsetTable() { DataSet ds = GetDataFrowExcel( ); for(int i=0;i<ds.Tables[0].Rows.Count;i++) { DataRow[] row = ds.Tables[i].Select("列名='"+Row["主键列"]+"'") string sql1= "inset 主表 (主键)values('Row["主键列"]+"')";//插入主表数据 for(int k=0;k<row.Lenght;k++) { string sql1= "inset 从表 (从表主键,与主表关联键)values('主键值''Row["主键列"]+"')";//插入从数据 } //执行sql就行. } } SELECT * INTO 表名 FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0','Excel 8.0;Database='excel文件路经', [sheet名$])这样就可以操作SQL表了。 新手,请教大牛 。winfrom统计 xml文件 想请教一下关于开发安全问题 DataGridView的自定义模板怎么用? 如何中止System.Threading.Timer ftp文件上传服务器问题 如何检验一字符串为有效指定格式的DateTime类型,再将其转换成DateTime类型 问个comboBox的小问题 怎么设置table控件的对齐方式,谢谢 比较好的东西,可以看下 C# 使用OLEDB修改Excel值 C#和JAVA键盘上面的键的表示方法 关于.net开发交通导航系统
insert into B (file1,file2...) values(value1,value2);看樓下更好的方法!
1.先从excel中取出数据,如下:
public DataSet GetDataFrowExcel( )
{ OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Filter = "Excel files(*.xls)|*.xls";
DataSet dataSet = new DataSet();
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
OleDbConnection oleDbConn = null;
OleDbDataAdapter oleAdapter = null;
try
{
FileInfo fileInfo = new FileInfo(openFileDialog.FileName);
string filePath = fileInfo.FullName;
string connExcel = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Extended Properties=Excel 8.0"; oleDbConn = new OleDbConnection(connExcel);
oleDbConn.Open(); //获取excel表
DataTable dataTable = oleDbConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); //获取sheet名,其中[0][1]...[N]: 按名称排列的表单元素
string tableName = dataTable.Rows[0][2].ToString().Trim();
tableName = "[" + tableName.Replace("'", "") + "]"; //利用SQL语句从Excel文件里获取数据
string selStr = "select excel列1,excel列2 from "+ tableName"; oleAdapter = new OleDbDataAdapter(selStr, connExcel); oleAdapter.Fill(dataSet);
oleDbConn.Close();
oleDbConn.Dispose();
oleAdapter.Dispose();
} catch
{
oleDbConn.Close();
oleDbConn.Dispose();
oleAdapter.Dispose();
MessageBox.Show("获取数据出错,请确定选择的文件是否正确");
dataSet = null;
}
}
else
{
dataSet = null;
}
return dataSet;
}2. 循环取出来的dataset.
privite void InsetTable()
{
DataSet ds = GetDataFrowExcel( );
for(int i=0;i<ds.Tables[0].Rows.Count;i++)
{
DataRow[] row = ds.Tables[i].Select("列名='"+Row["主键列"]+"'")
string sql1= "inset 主表 (主键)values('Row["主键列"]+"')";//插入主表数据
for(int k=0;k<row.Lenght;k++)
{
string sql1= "inset 从表 (从表主键,与主表关联键)values('主键值''Row["主键列"]+"')";//插入从数据
}
//执行sql就行.
}
}
这样就可以操作SQL表了。