【问题标题】:Error on the query string SQL查询字符串 SQL 出错
【发布时间】:2015-07-24 04:50:54
【问题描述】:

我收到以下错误:

“'System.Data.SqlClient.SqlException' 类型的第一次机会异常 System.Data.dll 中发生附加信息:语法不正确 靠近 ')'。如果有这个异常的处理程序,程序可能是 安全地继续。”

这是语法吗?我真的想不通,谁能告诉我做错了什么?

        private void button2_Click(object sender, EventArgs e)
    {
        MessageBox.Show("A Atualizar dados...");
        bool check = true;
        do
        {
            string connectionString = @"Data Source=.\wintouch;Initial Catalog=bbl;User ID=sa;Password=Pa$$w0rd";
            string queryString = string.Empty;
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                connection.Open();
                queryString = "UPDATE  wgcdoccab SET merc1 = merc1/2 WHERE numdoc = (SELECT MAX(numdoc) FROM WGCDOCCAB WHERE serie ='1' and tipodoc ='FSS' and contribuinte ='999999990' and  datadoc = CONVERT(varchar(10),(dateadd(dd, -1, getdate())), 120))";
                SqlCommand command = new SqlCommand(queryString, connection);
                command.ExecuteNonQuery();
                connection.Close();
            }
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                connection.Open();

                queryString = "SELECT max(numdoc) FROM wgcdoccab WHERE serie ='1' and tipodoc ='FSS' and contribuinte ='999999990' and datadoc = CONVERT(varchar(10),(dateadd(dd, -1, getdate())), 120))";
                using (SqlCommand command = new SqlCommand(queryString, connection))
                using (SqlDataReader reader = command.ExecuteReader())
                {
                    if (reader.HasRows)
                    {

                        check = true;

                    }
                    else
                    {
                        check = false;
                        MessageBox.Show("Dados atualizados com sucesso");
                    }
                    command.Connection.Close();
                }
            }
        }
        while (check);

【问题讨论】:

  • 好吧,哪个查询引发了该错误?可能两者兼而有之,因为您在它们的末尾有太多 )...
  • 开始逐步运行您的查询。从小零件开始,然后做更大的零件。我相信您会在您的代码中找到多余的/不必要的()
  • Visual Studio 正在突出显示 SELECT 查询。我不确定,代码似乎是正确的。
  • 为什么在 getdate 旁边有一大堆 )。如何使用 curdate() 或存在的东西?数一数你的开闭()
  • 看起来你在 select 语句的末尾多了一个 ')'。

标签: c# mysql


【解决方案1】:

检查您的 SQL 语句。此行的括号太多:

queryString = "SELECT max(numdoc) FROM wgcdoccab WHERE serie ='1' and tipodoc ='FSS' and contribuinte ='999999990' and datadoc = CONVERT(varchar(10),(dateadd(dd, -1, getdate())), 120))";

【讨论】:

  • 是的,这就是问题所在,我最终一一检查了行和括号。不过还是谢谢你的回答!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多