【发布时间】:2013-11-17 04:47:33
【问题描述】:
在 C# 项目中,我在我的表单中创建了一个 datagridview,其中包含一些列。列 [0] 和列 [1] 名称是固定的(日期和日期),其他列名称是可变的,将由用户更改。这些列具有显示开始和结束时间的时间段。 例如从早上 6 点到下午 14 点显示为 6_14 作为列名。我们有一个列表框,其中包含可变数量的项目(计数器“i”)。
///sqlite doesn't accept columns name that start and finish with Numbers.I added word "f" to start and end of each
///column name
string data_str = "";
string data_str2="";
for (int i = 0; i < listBox1.Items.Count;i++ )
{
string temp = "f"+ listBox1.Items[i].ToString()+"f";
data_str = data_str + temp +",";
string temp2 = "@"+listBox1.Items[i].ToString()+",";
data_str2=data_str2+temp2;
}
data_str=data_str.TrimEnd(',');
data_str2=data_str2.TrimEnd(',');
在第一步中,我在数据库的数据表中创建了两列“day”和“date”,并将我的数据成功导入到其中。(有效)
string Q_insert = "insert into " + table_name + " (day,date) values (@day,@date)";
SQLiteConnection connect = new SQLiteConnection(connection_string);
SQLiteCommand insert_cmd = new SQLiteCommand(Q_insert, connect);
foreach (DataGridViewRow row in shift_datagrid.Rows)
{
insert_cmd.Parameters.AddWithValue("@day", row.Cells[0].Value.ToString().Trim());
insert_cmd.Parameters.AddWithValue("@date", row.Cells[1].Value.ToString().Trim());
connect.Open();
insert_cmd.ExecuteNonQuery();
connect.Close();
}
在第二步中,我需要将用户数据从datagridview导入数据表,但出现错误。(它不起作用)
int col_cnt = listBox1.Items.Count;
Q_insert = "insert into " + table_name + " (" + data_str + ") values (" + data_str2 + ")";
connect = new SQLiteConnection(connection_string);
insert_cmd = new SQLiteCommand(Q_insert, connect);
foreach (DataGridViewRow row in shift_datagrid.Rows)
{
string temp1 = "";
for (int i = 0; i < col_cnt; i++)
{
temp1 = "\"@" + listBox1.Items[i].ToString() +"\"";
insert_cmd.Parameters.AddWithValue(temp1, row.Cells[i + 2].Value.ToString().Trim());
}
connect.Open();
insert_cmd.ExecuteNonQuery();
connect.Close();
}
不幸的是,出现了这个错误:
未知错误:Insufficient parameters supplied to the command
我用谷歌搜索了这个错误并检查了相同问题的解决方法,但它们对我的问题没有用,而且他们也帮不了我。
这是将数据插入数据库的输出命令字符串示例(两步):
1. 插入 [table_name] (day,date) 值 (@day,@日期)-------------->(有效)
2. 插入 [table_name] (f6_14f,f14_22f,f22_6f) 值 (@6_14, @14_22,@22_6) ------->(不起作用)
请帮帮我 谢谢
【问题讨论】: