本文介绍了“ SqlParameterCollection仅接受非null的SqlParameter类型对象,不接受String对象”的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我不断收到异常
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();
}
}
请告诉我我要去哪里了。
Please tell me where I'm going wrong.
推荐答案
使用 Add
方法时,您尝试添加一个新的参数。您要做的就是分配价值。因此,更改以下内容:
When you use Add
method, you are trying to add a new parameter. What you want to do is to assign value. So change this:
comm.Parameters.Add(dataGridView1.Rows[i].Cells[0].Value.ToString());
为此:
comm.Parameters["@author"].Value = dataGridView1.Rows[i].Cells[0].Value.ToString();
与其他参数类似。
这篇关于“ SqlParameterCollection仅接受非null的SqlParameter类型对象,不接受String对象”的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!