没有为一个或多个必需参数提供值 当给出所有参数时



我得到的错误是System.Data 中发生了类型为"System.Data.OleDb.OleDbException"的未处理异常.dll

其他信息:没有为一个或多个必需参数提供值。

但这是当所有参数当前代码在下面时:

private OleDbDataReader dbReader;// Data Reader object
    string sConnection = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=ICTSchool.accdb";
    string sql;
    OleDbConnection dbConn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=ICTSchool.accdb");
    OleDbCommand dbCommand;
public class ComboboxItem
    {
        public string Text { get; set; }
        public object Value { get; set; }
        public override string ToString()
        {
            return Text;
        }
    } 
private void bAdd_Click(object sender, EventArgs e)
    {
        {
            dbConn = new OleDbConnection(sConnection);
            dbConn.ConnectionString = sConnection;

            dbConn.Open();
            string code = (cBQualification.SelectedItem as ComboboxItem).Value.ToString();
            string sqlinsert = "INSERT INTO Student VALUES (" + tBStudentNum.Text + "," + tBStudentName.Text+","+ tBCellNo.Text+","+ code + ")";
            Console.WriteLine("Test 'sqlinsert' "+ sqlinsert);
            dbCommand = new OleDbCommand(sqlinsert, dbConn);
            dbCommand.ExecuteNonQuery();
        }
    }

以下是有关如何在 MS Access 中插入值的文章的一部分。若要向表中添加一条记录,必须使用字段列表定义要放入数据的字段,然后必须在值列表中提供数据本身。若要定义值列表,请使用 VALUES 子句。

例如,以下语句将值"1"、"Kelly"和"Jill"分别插入到"客户 ID"、"姓氏"和"名字"字段中。

插入到客户

(客户 ID, [姓氏], [名字]( 值 (1, 'Kelly', 'Jill'(

您可以省略字段列表,但前提是提供记录可以包含的所有值。

插入到 tbl客户值 (1, 凯利, '吉尔', '555-1040', "someone@microsoft.com"(

源 MSDN 如何:使用 Access SQL 在表中插入、更新和删除记录

我看到的问题可能是由于格式不正确的 SQL 语句。字符串值(NVARCHAR,VARCHAR(应该括在单引号中,我相信这不是您现在通过以下语句所做的

string sqlinsert = "INSERT INTO Student VALUES (" + tBStudentNum.Text + "," + tBStudentName.Text+","+ tBCellNo.Text+","+ code + ")";

尝试将 SQL 语句更改为

string sqlinsert = $"INSERT INTO Student VALUES ({tBStudentNum.Text}, '{tBStudentName.Text}', {tBCellNo.Text}, '{code}')";

在上述情况下,我假设tBStudentNum.Text和tBCellNo.Text是数值。如果没有,您可以进行适当的更改以将值放在单引号内。

如果使用的是较低版本的 .net/C#,请将 $ 表达式替换为 string.format 函数。

一些观察结果:

  1. 您尚未在 SQL 中指定参数,因此我们只能假设 Student 表中有四个字段。
  2. 您没有使用命名参数 - 这通常是不好的做法。
  3. 您正在使用串联值和 SQL - 这将使您容易受到 SQL 注入攻击
  4. 任何一个文本框都可能包含逗号或其他导致 SQL 错误的 SQL 格式字符。

相关内容

  • 没有找到相关文章

最新更新