c# – 错误在我的SQL语句中说“缺少右括号”……但事实并非如此
发布时间:2020-12-16 01:46:06 所属栏目:百科 来源:网络整理
导读:这是我在C#程序中的陈述: (由gbn编辑,格式清晰,所以不是全部在一行) DbCommand.CommandText = @"SELECT HIST.MBRSEP,HIST.LOCATION,HIST.BILLTYPE,HIST.BILLMOYR,LOCINFO.CYCLE,LOCINFO.DIST,LOCINFO.LOCATION FROM (CAV_MBRHISTDEL AS HIST INNER JOIN CAV
这是我在C#程序中的陈述:
(由gbn编辑,格式清晰,所以不是全部在一行) DbCommand.CommandText = @"SELECT HIST.MBRSEP,HIST.LOCATION,HIST.BILLTYPE,HIST.BILLMOYR,LOCINFO.CYCLE,LOCINFO.DIST,LOCINFO.LOCATION FROM (CAV_MBRHISTDEL AS HIST INNER JOIN CAV_LOCINFODETL AS LOCINFO ON HIST.LOCATION = LOCINFO.LOCATION) WHERE LOCINFO.CYCLE = @CYCLE AND LOCINFO.DIST = @DISTRICT AND HIST.BILLTYPE = '09' AND HIST.BILLMOYR <> '9999'"; 这是错误消息:
我的SQL语句中只有两个括号,一个是右边的,一个是左边的.我不确定错误告诉我的是什么.有什么建议? 编辑:以下是如何定义参数: string cycle = cbCycle.Text; string district = cbDistrict.Text.Substring(0,2); 这是我将它们添加到DbCommand的地方: DbCommand.Parameters.AddWithValue("@CYCLE",cycle); DbCommand.Parameters.AddWithValue("@DISTRICT",district); 这是我的完整代码,当有人点击我的表单上的“转到”按钮时触发: private void btnGo_Click(object sender,EventArgs e) { //get parameters string cycle = cbCycle.Text; string district = cbDistrict.Text.Substring(0,2); //create a connection to the database OdbcConnection DbConnection = new OdbcConnection("DSN=UPN2;uid=xxx;pwd=xxxx"); DbConnection.Open(); //create a command to extract the required data and //assign it to the connection string OdbcCommand DbCommand = DbConnection.CreateCommand(); DbCommand.CommandText = @"SELECT HIST.MBRSEP,LOCINFO.LOCATION FROM CAV_MBRHISTDEL AS HIST INNER JOIN CAV_LOCINFODETL AS LOCINFO ON HIST.LOCATION = LOCINFO.LOCATION WHERE LOCINFO.CYCLE = @CYCLE AND LOCINFO.DIST = @DISTRICT AND HIST.BILLTYPE = '09' AND HIST.BILLMOYR <> '9999'; "; DbCommand.Parameters.AddWithValue("@CYCLE",district); //Create a DataAdapter to run the command and fill the datatable OdbcDataAdapter da = new OdbcDataAdapter(); da.SelectCommand = DbCommand; DataTable dt = new DataTable(); da.Fill(dt); tbOutput.Text = PrintDataTable(dt); DbCommand.Dispose(); DbConnection.Close(); } 解决方法
问题可能是您使用oracle保留字作为列名和param名称 – 即CYCLE …
这样做可能会导致DB的奇怪和不稳定的行为! 见http://download.oracle.com/docs/cd/B19306_01/em.102/b40103/app_oracle_reserved_words.htm 根据您的数据库提供程序,您可能希望使用:而不是@表示params. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |