【问题标题】:C# Add User data to Local Database - Parsing ErrorC# 将用户数据添加到本地数据库 - 解析错误
【发布时间】:2015-10-04 23:12:04
【问题描述】:

我正在尝试将用户输入添加到本地数据库,使用测试框、组合框、复选框、选中列表框和数据选择器,但它真的没有发挥作用。

我收到 SQLException 未处理的错误声明

解析查询时出错。 [令牌行号 = 1,令牌行偏移量 = 261,错误令牌 = End ]' 在 `cmd.ExecuteNonQuery();

我的代码如下,有人知道我哪里出错了吗?

private void button1_Click(object sender, EventArgs e)
{
    string query = "INSERT INTO OMTracker (ProjectNumber, ProjectTitle, ProjectDescription, Client, EndUser, ContractManager, Engineer, DocumentsNeeded, CompletedDate, IssuedDate, ContractDiary, Revision, Comments) VALUES (@ProjectNumber, @ProjectTitle, @ProjectDescription, @Client, @EndUser, @ContractManager, @Engineer, @DocumentsNeeded, @CompletedDate, @IssuedDate, @ContractDiary, @Revision, @Comments)";

    string connectionString = @"Data Source=|DataDirectory|\OMTrackerDatabase.sdf;Persist Security Info=True";

    SqlCeConnection connection = new SqlCeConnection(connectionString);
    connection.Open();

    SqlCeCommand cmd = new SqlCeCommand(query, connection);
    string Documents = DocumentsNeeded.CheckedItems.ToString();

    cmd.Parameters.AddWithValue("@ProjectNumber", ProjectNumber.Text);
    cmd.Parameters.AddWithValue("@ProjectTitle", ProjectTitle.Text);
    cmd.Parameters.AddWithValue("@ProjectDescription", ProjectDescription.Text);
    cmd.Parameters.AddWithValue("@Client", Client.Text);
    cmd.Parameters.AddWithValue("@EndUser", EndUser.Text);
    cmd.Parameters.AddWithValue("@ContractManager", ContractManager.SelectedValue);
    cmd.Parameters.AddWithValue("@Engineer", Engineer.SelectedValue);
    cmd.Parameters.AddWithValue("@DocumentsNeeded", Documents);
    cmd.Parameters.AddWithValue("@Revision", Revision.Text);
    cmd.Parameters.AddWithValue("@CompletedDate", CompletedDate.Value);
    cmd.Parameters.AddWithValue("@IssuedDate", IssuedDate.Text);
    cmd.Parameters.AddWithValue("@ContractDiary", ContractDiary.Checked ? 1 : 0);
    cmd.Parameters.AddWithValue("@Comments", Comments.Text);

    cmd.ExecuteNonQuery();          

    MessageBox.Show("Entry Added.");
    this.Close();
}

任何帮助将不胜感激,谢谢。

【问题讨论】:

  • DocumentsNeeded.CheckedItems.ToString() 变成了什么?另外,您是否查看了分析器以查看您生成的查询?
  • 您好,感谢您的回复。它将 CheckedListBox 中的许多选中项转换为字符串,以便可以将其用作参数值。抱歉,我对编码有点陌生,什么是分析器?
  • Engineer.SelectedValue 和 ContractManager.SelectedValue 的 C# 类型是什么? Engineer、ContractManager 和 ContractDiary 的 SQL 数据表类型有哪些?
  • 嗨涂鸦。 'Engineer' 是一个组合框,是 DataTable 上的一个 Combobox 类型。 'ContractManager' 也一样。 ContractDiary 是 Checkbox,是 DataTable 的 Checkbox 类型。

标签: c# database parsing local sqlexception


【解决方案1】:

我想通了。它不喜欢 'SelectedValue' 作为 @ContractManager 和 @Engineer 的参数值,所以我将其更改为 'SelectedItem' 并且效果很好。

非常感谢您的建议。

【讨论】:

    【解决方案2】:
      cmd.Parameters.AddWithValue("@CompletedDate", CompletedDate.Value);
        cmd.Parameters.AddWithValue("@IssuedDate", IssuedDate.Text);
    

    --我猜你正试图将一个字符串放入 IssuedDate 的日期时间字段中。

    【讨论】:

    • 嗨中性手柄。不敢相信我忽略了这一点。但是我仍然收到带有相同错误消息的 SqlCeException was unhandled 错误。
    • ProjectNumber 应该是一个数字类型并且它被传递一个字符串值。
    • ProjectNumber 可以以字母开头,后跟 4 位数字,所以不能是数字类型,必须是字符串。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-27
    • 2017-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多