【问题标题】:C# No value given for one or more required parametersC# 没有为一个或多个必需参数指定值
【发布时间】:2015-09-09 04:26:07
【问题描述】:

SQL 语法有什么问题吗?

Sql 语法:

UPDATE Table1 SET 
       Username='Diana' , 
       Email='Diana@gmail.com' , 
       FirstName='' , 
        LastName='' , 
       CrediCardNum='' 
Where Username='Diana'

它总是给我错误:

没有为一个或多个必需参数指定值。

我尝试重新启动 Visual Studio,但一直报同样的错误

c#代码

                f1.Connection1.Open();
            OleDbCommand Command = new OleDbCommand();
            Command.Connection = f1.Connection1;
            if(m[6].Contains("Red"))
            Command.CommandText = "UPDATE userdlt SET Username='"+textBox10.Text+"' , Email='"+textBox9.Text+"' , FirstName='"+textBox8.Text+ "',LastName='"+textBox7.Text+"',CrediCardNum='"+textBox6.Text+"' Where Username='"+m[0]+"'" ;
            else
                Command.CommandText = "UPDATE Table1 SET Username='"+textBox10.Text+"' , Email='"+textBox9.Text+"' , FirstName='"+textBox8.Text+ "' , LastName='"+textBox7.Text+"' , CrediCardNum='"+textBox6.Text+"' Where Username='"+m[0]+"'" ;
            Clipboard.SetText(Command.CommandText);
            Command.ExecuteNonQuery();
            f1.Connection1.Close();
            MessageBox.Show("Member UPDATED Succefully");

m 数组是字符串数组

【问题讨论】:

  • 能否请您也展示您的 C# 代码?
  • 请发布您的完整代码
  • 请发布您的 C# 代码。您似乎正在使用 OleDb,但如果没有更多信息,即使这样也不清楚。
  • @Hackathon 您的所有列都是字符类型的?顺便说一句,您应该始终使用parameterized queries。这种字符串连接对SQL Injection 攻击开放。
  • CreditCardNum 在您的查询中拼写错误

标签: c# sql syntax ms-access-2007 helper


【解决方案1】:

您的列名creditcardNum 缺少t

  Command.CommandText = "UPDATE Table1 SET Username='"+textBox10.Text+"' ,
 Email='"+textBox9.Text+"' , FirstName='"+textBox8.Text+ "' ,
LastName='"+textBox7.Text+"' , CrediCardNum='"+textBox6.Text+"' Where 
Username='"+m[0]+"'" ;

应该是

 Command.CommandText = "UPDATE Table1 SET Username='"+textBox10.Text+"' ,
     Email='"+textBox9.Text+"' , FirstName='"+textBox8.Text+ "' ,
    LastName='"+textBox7.Text+"' , CreditCardNum='"+textBox6.Text+"' Where 
    Username='"+m[0]+"'" ;

你的表定义图片写着CreditCardNum

【讨论】:

  • 我不能投票,因为我是新用户所以我认为这是某种故障
  • @Hackathon 你不能投票..一旦你获得 15 个声望,你就可以投票
  • @Hackathon 同时避免写这样的查询..总是尽量提供参数查询
【解决方案2】:

我怀疑电子邮件地址中的“@”使 SqlCommand 认为您正在传递参数。避免这种情况的方法如下:

string sql = "UPDATE myTable SET col1 = @val1, col2=@val2 WHERE col3 = @val3";

那么,一旦你用这个 SQL 创建了命令对象:

myCommand.Parameters.AddWithValue("val1", "anEmail@address.com");

等等。

【讨论】:

  • 我会重写代码和使用参数谢谢:D
  • 不确定它是否有助于解决您的问题(它会针对 SQL Server 数据库)。但无论哪种方式 - 这是一种很好的做法,可以防止由于输入错误而损坏数据库。编码愉快。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-23
  • 2017-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多