帮忙看看下面的代码那里错了。代码:  
            public int Execute(string str)
            {
                OleDbCommand Comm = new OleDbCommand(str, Conn);
                int R = Comm.ExecuteNonQuery();      错误提示信息:至少一个参数没有被指定值。
                Comm.Dispose();
                return R;
            }在下查了查msdn,“ExecuteNonQuery()”中并没有参数值啊,这是怎么回事?

解决方案 »

  1.   

    str是:
    string sql = "insert into jbxxb(mc,dh,dz) values(mc_yyg,dh_yyg,dz_yyg)";
      

  2.   

    应该不是ExecuteNonQuery(); 方法的参数,而是SQL语句本身的参数!
    你确定mc_yyg,dh_yyg,dz_yyg这三个参数都指定的值了吗?
      

  3.   

    sql 语句错误。
    必要的情况下 加 [mc] 类似。
      

  4.   

    这段的所有代码:
    private void YYGSZ_Click(object sender, EventArgs e)
            {
                //提交信息
                string mc_yyg = MC_YYG.Text;
                string dh_yyg = DH_YYG.Text;
                string dz_yyg = DZ_YYG.Text;
                string sql = "insert into jbxxb(mc,dh,dz) values(mc_yyg,dh_yyg,dz_yyg)";
                AccessDB access = new AccessDB();
                int add = access.Execute(sql);
                if (add > 0)
                {
                    MessageBox.Show("提交成功", "提示框");
                }
                else
                {
                    MessageBox.Show("提交失败","提示框");
                }
                access.Dispose();
            }
      

  5.   

    string sql = "insert into jbxxb(mc,dh,dz) values(mc_yyg,dh_yyg,dz_yyg)";
    mc_yyg,dh_yyg?
    字符串'"+dh_yyg+"'
      

  6.   

    谢谢,你们问题解决了。但是,在下还是有点疑问。
    到底什么时候'"+dh_yyg+"',什么时候又不加引号呢?
      

  7.   

    dh_yyg是变量,实际用的是里面的值,它本身不是SQL语句的一部分!这时候要加!
      

  8.   

    举个例子 比如dh_yyg不是字符串类型。但实际输入时需要字符串类型的需要手动给dh_yyg加上‘’
      

  9.   

    你的OleDbConnection对象open了没有啊?
      

  10.   

    ID:自动编号
    mc、dh、dz都是文本字段
      

  11.   

    字段类型
    id:自动编号
    mc、dh、dz:文本类型
      

  12.   

    Imports System
    Imports System.Data
    Imports System.Data.OleDbPublic Class 登录界面
        Public gzkh As String '工作卡号 对应医师号
        Public gzkl As String '工作口令
        Public gzry As String '工作人员
        Public myconn As OleDbConnection
        Public connstr As String    ' Public myselect As String
        '打开数据库表    Public Sub opensjkb()
            'dim 
            connstr = "Provider=Microsoft.Jet.OleDB.4.0;Data Source=.\住院医生工作站数据.mdb"
            myconn = New OleDbConnection(connstr)
            myconn.Open()
        End Sub
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Me.Hide()
            更改口令.Show()
        End Sub    '确定登录
        Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            If TextBox3.Text = "" Or TextBox1.Text = "" Or TextBox2.Text = "" Then
                MsgBox("信息不完整,请将信息填写完整")
            Else
                Call opensjkb() '调用住院医生表
                gzkh = TextBox3.Text
                gzkl = TextBox1.Text
                gzry = TextBox2.Text            Dim myselect As String = "select top 1 * from 住院医生 where 医师号='" & gzkh & " 'and 工作口令='" & gzkl & " ' and 医生姓名='" & gzry & " '"
                Dim mycommd As OleDbCommand = New OleDbCommand(myselect, myconn)
                mycommd.ExecuteNonQuery()
                Dim myreaders As OleDbDataReader = mycommd.ExecuteReader()
                If myreaders.Read() = True Then
                    gzkh = TextBox3.Text
                    gzkl = TextBox1.Text                Me.Hide()
                    zyysgzz.Show()
                Else
                    MsgBox("工作卡号或者工作口令错误,请重新输入")
                End If
                myconn.Close()
            End If
        End Sub
    mycommd.ExecuteNonQuery() 至少一个参数没有被指定值。 是什么问题呢?