for循环插入数据问题!在线等,急救
for (int i = 0; i < dt.Rows.Count; i++)//取数据行记录
{
for (int j = 0; j < dt.Columns.Count;j++ )//取数据列数
{
//这里如何写,可以把数据逐行插入到数据裤中?
}
}
[解决办法]
SqlConnection cnn = new SqlConnection(qq.ConnectionString);
string sqlcmdins = "Insert TLane(No1,No2,NO3) Values( ' " +NO1 + " ', ' " + NO2 + " ', ' "+no3+ " ') ";
SqlCommand DataCommand = new SqlCommand(sqlcmdins, cnn);
DataCommand.Connection.Open();
SqlDataReader dataReader = DataCommand.ExecuteReader();
[解决办法]
string strSql= "Insert into table(column1,column2,column3) values( ";
string strValue= " ";
for (int i = 0; i < dt.Rows.Count; i++)//取数据行记录
{
for (int j = 0; j < dt.Columns.Count;j++ )//取数据列数
{
//这里如何写,可以把数据逐行插入到数据裤中?
strValue+= " ' "+dt.Tables[0].Rows[i][j].Tostring();
}
}
大概这个意思,没有经过测试,不过建议不要这样写,因为列的数据类型不一样的,有些要加引号,有些不加,不好控制的,建议写成:
string strSql= "Insert into table(column1,column2,column3) values( ";
StringBuifer strSql=new StringBuifer();
for (int i = 0; i < dt.Rows.Count; i++)//取数据行记录
{
{
//这里如何写,可以把数据逐行插入到数据裤中?
strSql.Append( "Insert into table(column1,column2,column3) values( ");
strSql.Append( ", "+dt.Tables[0].Rows[i][0]);
strSql.Append( ", "+dt.Tables[0].Rows[i][1]);
strSql.Append( ", "+dt.Tables[0].Rows[i][2]);
}
[解决办法]
一楼的写法漏洞百出,不要效仿!
MSND 上有标准代码,难道 LZ 不知道?
L@_@K
string insertString = string.Empty;
// connectionString 自己写
using (SqlConnection connection = new SqlConnection(connectionString))
{
SqlCommand command = new SqlCommand();
command.Connection = connection;
command.Connection.Open();
for (int i = 0; i < dt.Rows.Count; i++)//取数据行记录
{
for (int j = 0; j < dt.Columns.Count;j++ )//取数据列数
{
insertString = "insert ... "; // 构建 Sql 语句
command.CommandText = insertString;
command.ExecuteNonQuery();
}
}
}
[解决办法]
楼主是要每次循环都执行一次数据添加操作
还是通过for循环来构造 一 条sql语句完成所有的添加操作?
------解决方案--------------------
insertString = "insert ... "; // 构建 Sql 语句 把这里写清楚,怎么构建?insert into 我会写,单条插入我知道写,但是现在用循环逐条插入我不知道怎么写。
这里写一个带参的数据插入的构造函数,每次调用这个函数
[解决办法]
for (int i = 0; i < dt.Rows.Count; i++)//取数据行记录
{
StringBuilder str1=new StringBuilder();
str1.Append( "Insert into table( ");
StringBuilder str2=new StringBuilder();
str2.Append( "values( ");
for (int j = 0; j < dt.Columns.Count;j++ )//取数据列数
{
str1.Append(dt.Columns[j].ColumnName+ ", ");
str2.Append( " ' "+dt.Rows[i][j].ToString()+ " ', ");
//这里如何写,可以把数据逐行插入到数据裤中?
}
StringBuilder inserstr= str1.Remove(str1.Lenth-1,1).Append( ") ")+
str2.Remove(str1.Lenth-1,1).Append( ") ") ;//组装成插入语句
}
[解决办法]
在怎么样一个表列的总数是固定的。根据原表的列数来提取数据。插入到目的表中不就完了嘛
[解决办法]
for (int i = 0; i < dt.Rows.Count; i++)//取数据行记录
{
StringBuilder str1=new StringBuilder();
str1.Append( "Insert into table( ");
StringBuilder str2=new StringBuilder();
str2.Append( "values( ");
for (int j = 0; j < dt.Columns.Count;j++ )//取数据列数
{
str1.Append(dt.Columns[j].ColumnName+ ", ");
str2.Append( " ' "+dt.Rows[i][j].ToString()+ " ', ");
}
StringBuilder inserstr= str1.Remove(str1.Lenth-1,1).Append( ") ")+
str2.Remove(str1.Lenth-1,1).Append( ") ") ;//组装成插入语句
}
[解决办法]
思路是这样的,可能有些语法有点问题
[解决办法]
我是这样的我上一个excel表,里面有多条数据,我要道到SQL里,我已经把excel的记录放在一个DataTable里了,我要循环插入到SQL表里去,懂了吗?
----------------------------------------
这样就简单了 ,不用 循环,用sqlBulkCopy类就可以了一次全部导入了,具体可查MSDN