如何用数据表对象生成 sql insert 命令
2006-10-01 15:21
344 查看
前段时间做数据传输服务,在解决不同服务器之间进行数据交换时想到了这个方法,也许不是很常用,交流一下
public string[] GenInsertCmd(DataTable table)
{
string inscmd = "insert into " + table.TableName.Trim().ToLower() + " (";
foreach(DataColumn col in table.Columns)
{
inscmd += col.ColumnName + ",";
}
inscmd = inscmd.Substring(0,inscmd.Length - 1) + ") values (";
string[] sqlcmd = new string[table.Rows.Count];
int i = 0;
foreach(DataRow row in table.Rows)
{
sqlcmd[i] = "";
foreach(DataColumn col in table.Columns)
{
switch (col.DataType.Name.Trim().ToLower())
{
case "string":
try
{
sqlcmd[i] += "'" + ((string)row[col]).Trim() + "',";
}
catch
{
sqlcmd[i] += "null,";
}
break;
case "datetime":
try
{
sqlcmd[i] += "'" + ((DateTime)row[col]).ToString("yyyy-MM-dd hh:mm:ss.sss") + "',";
}
catch
{
sqlcmd[i] += "null,";
}
break;
case "boolean":
try
{
sqlcmd[i] += ((bool)row[col] == true ? "1," : "0,");
}
catch
{
sqlcmd[i] += "null,";
}
break;
case "byte[]":
sqlcmd[i] += "null" + ",";
break;
default:
if (row[col].ToString().Trim() == "")
sqlcmd[i] += "null,";
else
sqlcmd[i] += row[col].ToString().Trim() + ",";
break;
}
}
sqlcmd[i] = inscmd + sqlcmd[i].Substring(0,sqlcmd[i].Length - 1) + ")";
i += 1;
}
return sqlcmd;
}
public string[] GenInsertCmd(DataTable table)
{
string inscmd = "insert into " + table.TableName.Trim().ToLower() + " (";
foreach(DataColumn col in table.Columns)
{
inscmd += col.ColumnName + ",";
}
inscmd = inscmd.Substring(0,inscmd.Length - 1) + ") values (";
string[] sqlcmd = new string[table.Rows.Count];
int i = 0;
foreach(DataRow row in table.Rows)
{
sqlcmd[i] = "";
foreach(DataColumn col in table.Columns)
{
switch (col.DataType.Name.Trim().ToLower())
{
case "string":
try
{
sqlcmd[i] += "'" + ((string)row[col]).Trim() + "',";
}
catch
{
sqlcmd[i] += "null,";
}
break;
case "datetime":
try
{
sqlcmd[i] += "'" + ((DateTime)row[col]).ToString("yyyy-MM-dd hh:mm:ss.sss") + "',";
}
catch
{
sqlcmd[i] += "null,";
}
break;
case "boolean":
try
{
sqlcmd[i] += ((bool)row[col] == true ? "1," : "0,");
}
catch
{
sqlcmd[i] += "null,";
}
break;
case "byte[]":
sqlcmd[i] += "null" + ",";
break;
default:
if (row[col].ToString().Trim() == "")
sqlcmd[i] += "null,";
else
sqlcmd[i] += row[col].ToString().Trim() + ",";
break;
}
}
sqlcmd[i] = inscmd + sqlcmd[i].Substring(0,sqlcmd[i].Length - 1) + ")";
i += 1;
}
return sqlcmd;
}
相关文章推荐
- SQL Navigator 5 使用技巧——将表中数据,生成insert命令
- 如何将sqlserver表中的数据导出sql语句或生成insert into语句
- 如何将sqlserver表中的数据导出sql语句或生成insert into语句
- 如何将sqlserver表中的数据导出sql语句或生成insert into语句 [转]
- 如何将sqlserver表中的数据导出sql语句或生成insert into语句
- 如何将sqlserver表中的数据导出sql语句或生成insert into语句
- 如何将sqlserver表中的数据导出sql语句或生成insert into语句
- 如何将sqlserver表中的数据导出sql语句或生成insert into语句【转载】
- 自动生成Insert数据的SQL脚本
- Oracle中如何用一条SQL快速生成10万条测试数据
- ASP.NET基础教程-使用CommandBuilder对象自动生成SQL语句对数据进行批量更新
- 如何往有自增标识字段的表插入数据时,同时给自增标识字段插入值呢,在Inset Into语句前后加上SQL语句:SET IDENTITY_INSERT TableName ON和SET IDENTITY_INSERT TableName OFF
- SQL调优如何生成海量测试数据 推荐
- 将表数据生成Insert脚本 比较好用的生成插入语句的SQL脚本
- 【转】Oracle中如何用一条SQL快速生成10万条测试数据
- sql语句如何在insert一条数据后直接返回刚刚插入的数据的ID
- sql语句如何在insert一条数据后直接返回刚刚插入的数据的ID
- Oracle中如何用一条SQL快速生成10万条测试数据
- 数据模型是对象时如何利用freemarker生成静态文件
- Import data from files to SQL Server(用BULK INSERT命令导入数据详解)