【发布时间】: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 语句的末尾多了一个 ')'。