上篇文章将Excel中数据导入数据库时,将从Excel读入的数据均转换成了数据库相应字段的类型,其实这是没有必要的,因为对于数据库各种类型的插入,均可以字符串格式插入。比如表WQ_SWMSAR_A字段定义如下:
其中RESULTID为自增长字段。
可利用以下语句插入:
insert into [WaterQuality2].[dbo].[WQ_SWMSAR_A]
(STCD,ASOT,ASDR,WQG,MESPEST) values('','2013-07-25','','','chenyuming')
插入结果如下:
所以对于DataTable数据导入到数据库的通用函数可以写成如下形式:
// 从System.Data.DataTable导入数据到数据库(by chenyuming)
public int InsetData(System.Data.DataTable dt, string tableName)
{
int i = ; for (int rowIndex = ; rowIndex < dt.Rows.Count; rowIndex++)
{
string strSql = "Insert into " +tableName +"(";
string strValue = "";
for (int colIndex = ; colIndex < dt.Columns.Count; colIndex++)
{
if(colIndex == )
{
strSql += dt.Columns[colIndex].ColumnName;
strValue += dt.Rows[rowIndex][colIndex];
}
else
{
strSql += "," + dt.Columns[colIndex].ColumnName;
strValue += "," + dt.Rows[rowIndex][colIndex];
}
}
strSql += ") values ('";
strSql += strValue;
strSql += ")"; String strConnection = ConfigurationSettings.AppSettings["ConnectionStr"].ToString();
SqlConnection sqlConnection = new SqlConnection(strConnection);
try
{
sqlConnection.Open();
SqlCommand sqlCmd = new SqlCommand();
sqlCmd.CommandText = strSql;
sqlCmd.Connection = sqlConnection;
SqlDataReader sqlDataReader = sqlCmd.ExecuteReader();
i++;
sqlDataReader.Close();
}
catch (Exception ex)
{
throw ex;
}
finally
{
sqlConnection.Close();
}
}
return i;
}
当然这里有个性能劣点:每插入一行数据均进行了打开与关闭数据库。
相关文章:
(3)将Excel中数据导入数据库(三)