【问题标题】:how to fix SQL syntax error...upto...for the right syntax to use near '())' at line 1如何修复 SQL 语法错误...直到...在第 1 行的“())”附近使用正确的语法
【发布时间】:2019-05-04 02:47:19
【问题描述】:

我在 da.Fill(ds) 中遇到错误。我想在保存表格之前检查 CNIC。如果存在,则应提交表单,否则应显示 CNIC 无效。

public partial class ReportCrime : System.Web.UI.Page
       {
         MySqlConnection con = new MySqlConnection();
         MySqlCommand cmd = new MySqlCommand();
         DataSet ds = new DataSet();
     protected void Page_Load(object sender, EventArgs e)
        {
            con.ConnectionString = "Data Source=localhost;Initial Catalog=fir;Integrated Security=True;User Name=root;Password=;";
        con.Open();
        }
     protected void btnSubmit_Click(object sender, EventArgs e)
        {

        MySqlCommand cmd = new MySqlCommand("select count(CNIC) from reportcrime where CNIC=(txtCnicNo.Text.ToString())", con);
        MySqlDataAdapter da = new MySqlDataAdapter(cmd);
        da.Fill(ds);
        int i = ds.Tables[0].Rows.Count;
        if (i > 0)
        {
MySqlCommand acmd = new MySqlCommand("insert into reportcrime" + "(Name,CNIC,Phone1,Phone2,Email,Gender,City,Address,CrimeType,CrimeDetail)values(@Name,@CNICNO,@ContactNo.1,@ContactNo.2,@EmailAddress,@Gender,@CityName,@PostalAddress,@CrimeType,@CrimeDetail)", con);

                   acmd.Parameters.AddWithValue("@Name", txtName.Text);
                   acmd.Parameters.AddWithValue("@CNICNO", txtCnicNo.Text.ToString());
                   acmd.Parameters.AddWithValue("@ContactNo.1", txtcontactNo1.Text);
                   acmd.Parameters.AddWithValue("@ContactNo.2", txtcontactNo2.Text);
                   acmd.Parameters.AddWithValue("@EmailAddress", txtEmail.Text);
                   acmd.Parameters.AddWithValue("@Gender", ddlGender.SelectedItem.Value);
                   acmd.Parameters.AddWithValue("@CityName", txtCityName.Text);
                   acmd.Parameters.AddWithValue("@PostalAddress", txtaddress.Text);
                   acmd.Parameters.AddWithValue("@CrimeType", ddlCrimeType.SelectedItem.Value);
                   acmd.Parameters.AddWithValue("@CrimeDetail", txtCrimeDetails.Text);

                  acmd.ExecuteNonQuery();
         }

        else
        {
            MessageBox.Show("CNIC is not Valid");
        }

    }

 }

【问题讨论】:

  • txtCnicNo.Text.ToString() 看起来不像任何 SQL 方言。也许您打算将该值作为参数传递给查询。
  • 我怎样才能通过??可以举个例子吗?
  • 一个例子?你应该可以在protected void btnSubmit_Click(object sender, EventArgs e) 中找到几个。在string 上使用.ToString() 有点多余。

标签: c# mysql asp.net


【解决方案1】:

如果从文本框传递的值只是字符串,那么这应该可以工作


MySqlCommand cmd = new MySqlCommand("select count(CNIC) from reportcrime where CNIC='"+Convert.ToString(txtCnicNo.Text)+"'", con);

【讨论】:

  • 不,它仍然无法正常工作.. mysql 中的 CNIC 数据类型是 String-> varchar 。我已将其转换为字符串。
  • thanksss......现在查询中没有错误。但我已经将 CNIC 存储在同一个表中,并且我希望用户要输入的 CNIC,如果它存在于同一个表中,则应提交此表单。否则它不应该提交..现在在“if {}部分”的末尾 acmd.ExecuteNonQuery();如果我将主键删除为 CNIC 列,则表示“主键重复”,那么我将无法搜索我在未来工作中必须做的数据......
  • 你将哪一列作为主键
  • 我认为你必须在 con.open()con.close() 之间做一个 cmd.executenonquery();
  • @CNICNO 在数据库中作为 CNIC 我给了主键
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-28
  • 2023-02-13
  • 1970-01-01
  • 2018-07-01
  • 2019-08-17
相关资源
最近更新 更多