日期:2014-05-17  浏览次数:21165 次

批量添加uniqueidentifier类型的数据
简单的示例:
数据表A有两个字段,主健是ID,int类型;另外一个字段CODE,uniqueidentifier类型,没有默认值NEWID()
在做数据批量添加的时候出错,错误提示“将参数值从string转换到guid失败”

SqlCommand cmd = new SqlCommand("insert into A([ID],[CODE]) values(@ID,@CODE)",cn);
cmd.Parameters.Add("@ID",SqlDbType.Int,4,"ID");
cmd.Parameters.Add("@CODE", SqlDbType.Uniqueidentifier, 16, "CODE");
//cmd.Parameters.Add("@CODE", SqlDbType.Varchar, 32, "CODE"); 这样写也是错的,错误提示“将字符串转换为uniqueidentifier时失败”
SqlDataAdapter da = new SqlDataAdapter();
da.InsertCommand = cmd;
DataTable dt=new DataTable();
dt.Columns.Add("ID");
dt.Columns.Add("CODE");
for(int i=1;i<=100;i++)
{
DataRow newRow = dt.NewRow();
newRow["ID"] = i;
newRow["CODE"] = Guid.NewGuid();
dt.Rows.Add(newRow);
}

cn.Open();
da.Update(dt);
cn.Close(); 


如果添加单条记录,就可以添加成功。

SqlCommand cmd = new SqlCommand("insert into A([ID],[CODE]) values(@ID,@CODE)",cn);
cmd.Parameters.Add(New SqlParameter("@ID",1));
cmd.Parameters.Add(New SqlParameter("@CODE",Guid.NewGuid());
cn.Open();
cmd.ExecuteNonQuery();
cn.Close(); 


但是,要求使用批量添加的方法,请问各位大虾们,批量添加的时候,uniqueidentifier类型要怎么处理呢?谢谢!

------解决方案--------------------
dt.Columns["CODE"].DataType=Type.GetType("System.GUID"); 
先定义CODE列数据类型然后在插入数据