参数化插入查询中的数据类型不匹配问题

时间:2010-02-12 17:42:47

标签: c# sqlite ado.net parameters types

我有这个代码将记录从一个表转移到另一个

cmd2.CommandText = "select * from " + TableName;
                    reader = cmd2.ExecuteReader();
                    if (reader != null)
                    {

                        String s = "".PadLeft(reader.FieldCount - 1, 'X').Replace("X", "?,") + "?";
                        cmd.CommandText = String.Format("{0} into {1} values ({2})", insertorreplace, TableName, s);

                        StringBuilder sb = new StringBuilder();
                        while (reader.Read())
                        {
                            int i = 0;

                            for (i = 0; i < reader.FieldCount; ++i)
                            {
                                cmd.Parameters.AddWithValue(null,reader[i].ToString()); // data type issue
                            }
                            cmd.ExecuteNonQuery();
                        }
                        reader.Close();
                    }

可能是因为注释行我得到数据类型问题。我希望所有的东西都能通过字符串传递。

仍在寻找答案

1 个答案:

答案 0 :(得分:0)

如果您要从一个表复制到另一个表,最好的方法是使用INSERT INTO ... SELECT FROM在一个查询中完成所有操作。

要修复您的代码,只需从.ToString()删除reader[i]