已编辑!:
我正在编写一个具有将excel文件加载到datagridview中的功能的程序。Excel 文件包含十列的产品列表。至于现在它工作正常。文件加载正常。但是在这个加载之后,程序应该用来自 datagridview 的数据填充 SQL Server CE 数据库。因此,下次我打开此表单时,应使用数据库中的数据填充 datagridview。(此excel加载功能是在我公司发生变化时更新产品列表)。
我在将此数据插入数据库时遇到问题。
我有一个错误:
解析查询时出错。[Token line number = 1, Token line offset = 67, Token in error = Taq]
DNA 是 Excel 文件单元格中的一个单词(第 1 行第 3 列(“ITEM”)。单元格的全部内容是 AB-AB-0192/A Taq DNA 聚合酶(许可)。我认为问题与空间有关在 TAQ 之前。我测试过:当我删除那里的空间时,问题信息从 Taq 更改为 DNA。那么我该如何避免这种情况呢?excel 文件中的所有列都设置为文本,SQL Server CE 数据库列是类型nvarchar
。
编辑!
好吧,伙计们,你让我走上了正确的道路:)
这有效:
string strQuery = @"INSERT INTO TabelaProdukty VALUES (@VD, @ItemCode, @Item, @Qty, @Ppcur, @StandardPrice, @CeMarked, @Description, @Description2, @Edma)";
sqlconnection.Open();
using (System.Data.SqlServerCe.SqlCeCommand comm = new System.Data.SqlServerCe.SqlCeCommand(strQuery, sqlconnection))
{
comm.Parameters.Add("@VD", SqlDbType.NVarChar);
comm.Parameters.Add("@ItemCode", SqlDbType.NVarChar);
comm.Parameters.Add("@Item", SqlDbType.NVarChar);
comm.Parameters.Add("@Qty", SqlDbType.NVarChar);
comm.Parameters.Add("@Ppcur", SqlDbType.NVarChar);
comm.Parameters.Add("@StandardPrice", SqlDbType.NVarChar);
comm.Parameters.Add("@CeMarked", SqlDbType.NVarChar);
comm.Parameters.Add("@Description", SqlDbType.NVarChar);
comm.Parameters.Add("@Description2", SqlDbType.NVarChar);
comm.Parameters.Add("@Edma", SqlDbType.NVarChar);
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
comm.Parameters["@VD"].Value = dataGridView1.Rows[i].Cells["VD"].Value;
comm.Parameters["@ItemCode"].Value = dataGridView1.Rows[i].Cells["ItemCode"].Value;
comm.Parameters["@Item"].Value = dataGridView1.Rows[i].Cells["ITEM"].Value;
comm.Parameters["@Qty"].Value = dataGridView1.Rows[i].Cells["QUANTITY"].Value;
comm.Parameters["@Ppcur"].Value = dataGridView1.Rows[i].Cells["PPCUR"].Value;
comm.Parameters["@StandardPrice"].Value = dataGridView1.Rows[i].Cells["STANDARD_SELL_PRICE"].Value;
comm.Parameters["@CeMarked"].Value = dataGridView1.Rows[i].Cells["CE-MARKED"].Value;
comm.Parameters["@Description"].Value = dataGridView1.Rows[i].Cells["ITEM_DESCRIPTION"].Value;
comm.Parameters["@Description2"].Value = dataGridView1.Rows[i].Cells["ITEM_DESCRIPTION2"].Value;
comm.Parameters["@Edma"].Value = dataGridView1.Rows[i].Cells["EDMA"].Value;
comm.ExecuteNonQuery();
}
sqlconnection.Close();
数据库充满了正确的数据,当我重新启动程序时,数据库已经被填满。现在我只需要在添加新内容之前清除数据库。
一个问题。获取消息:从一种数据类型转换为另一种数据类型时数据被截断。[函数名称(如果知道)= ]