我一直有例外

The SqlParameterCollection only accepts non-null SqlParameter type objects, not String objects

同时执行以下代码:

string StrQuery;
using (SqlConnection conn = new SqlConnection(@"Data Source=.\sqlexpress;Initial Catalog=SanFransiscoData;Integrated Security=True;Pooling=False"))
{
    using (SqlCommand comm = new SqlCommand())
    {
        comm.Connection = conn;
        conn.Open();
       // SqlParameter author = new SqlParameter("@author", dataGridView1.Rows[0].Cells[0].Value.ToString());
        comm.Parameters.Add("@author", SqlDbType.VarChar);
        comm.Parameters.Add("@title", SqlDbType.NVarChar);
        comm.Parameters.Add("@genre", SqlDbType.VarChar);
        comm.Parameters.Add("@price", SqlDbType.Float);
        comm.Parameters.Add("@publish_date", SqlDbType.Date);
        comm.Parameters.Add("@description", SqlDbType.NVarChar);
        comm.Parameters.Add("@bookid", SqlDbType.VarChar);
        for (int i = 0; i < dataGridView1.Rows.Count; i++)
        {
            StrQuery = "INSERT INTO BooksData VALUES(@author,@title,@genre,@price,@publish_date,@description,@bookid)";
            comm.Parameters.Add(dataGridView1.Rows[i].Cells[0].Value.ToString());
            comm.Parameters.Add(dataGridView1.Rows[i].Cells[1].Value.ToString());
            comm.Parameters.Add(dataGridView1.Rows[i].Cells[2].Value.ToString());
            comm.Parameters.Add(Convert.ToDecimal(dataGridView1.Rows[i].Cells[3].Value));
            comm.Parameters.Add(Convert.ToDateTime(dataGridView1.Rows[i].Cells[4].Value));
            comm.Parameters.Add(dataGridView1.Rows[i].Cells[5].Value.ToString());
            comm.Parameters.Add(dataGridView1.Rows[i].Cells[6].Value.ToString());
            comm.CommandText = StrQuery;
            comm.ExecuteNonQuery();
        }
    }
}

请告诉我我哪里出错了.

推荐答案

当您使用Add方法时,您正在try 添加一个新参数.你要做的是赋值.所以改变这个:

comm.Parameters.Add(dataGridView1.Rows[i].Cells[0].Value.ToString());

对此,请执行以下操作:

comm.Parameters["@author"].Value = dataGridView1.Rows[i].Cells[0].Value.ToString();

其他参数也是如此.

Database相关问答推荐

使用 prisma ORM 在我的迁移中手动添加触发器

实体关系图. IS A 关系如何转换为table表?

SQLServer:如何对按外键依赖性排序的表名进行排序

Mysql - 在所有数据库中查找表

Android Room持久性库@Update不起作用

如何验证 SQLAlchemy ORM 中的列数据类型?

当使用多个 WHEN MATCHED 语句时,它们是全部执行,还是只执行一个?

Oracle 数据库统计信息应该多久运行一次?

如何将视图的所有权限授予任意用户

使用存储过程是一种不好的做法吗?

我应该不断地open()和close() SQL 数据库还是让它保持打开状态?

ORA-00060: deadlock detected while waiting for resource

在服务器上排序还是在客户端排序?

Mysql用户创建脚本

谁有维基数据库?

如何使用 Hibernate 在不丢失数据的情况下更新数据库模式?

数以百万计的条目排名

MySQL 从一个数据库插入另一个数据库

遍历数据库中的每条记录 - Ruby on Rails / ActiveRecord

Windows phone 7 的本地 Sql 数据库支持