问题描述
PublicFunctionExecSelect(ByValcmdTextAsString,ByValcmdTypeAsCommandType,ByValparasAsSqlParameter())AsDataTableDimsqlAdapterAsSqlDataAdapterDimdtAsNewDataTableDimdsAsNewDataSet'还是给cmd赋值cmd.CommandText=cmdTextcmd.CommandText="SELECTCount(对方账号)AS次数from@zhanghao"'cmd.CommandText="SELECTCount(对方账号)AS次数fromZD6217232605000074641"'上面不用参数时不出错,但是用参数时,就提示错误“必须声明表变量”DimspAsNewSqlParameter("@zhanghao","ZD6217232605000074641")cmd.CommandType=cmdTypecmd.Connection=conncmd.Parameters.Add(sp)sqlAdapter=NewSqlDataAdapter(cmd)'实例化adapterTrysqlAdapter.Fill(ds)'用adapter将dataSet填充dt=ds.Tables(0)'datatable为dataSet的第一个表cmd.Parameters.Clear()'清除参数CatchexAsException'MsgBox("查询失败",CType(vbOKOnly+MsgBoxStyle.Exclamation,MsgBoxStyle),"警告")MessageBox.Show(ex.Message,"请注意",MessageBoxButtons.OK,MessageBoxIcon.Stop)Finally'最后一定要销毁cmdCallCloseCmd(cmd)EndTryReturndtEndFunction
解决方案
解决方案二:
你cmd实例化了吗?
解决方案三:
引用楼主zuoguangxin01的回复:
PublicFunctionExecSelect(ByValcmdTextAsString,ByValcmdTypeAsCommandType,ByValparasAsSqlParameter())AsDataTableDimsqlAdapterAsSqlDataAdapterDimdtAsNewDataTableDimdsAsNewDataSet'还是给cmd赋值cmd.CommandText=cmdTextcmd.CommandText="SELECTCount(对方账号)AS次数from@zhanghao"'cmd.CommandText="SELECTCount(对方账号)AS次数fromZD6217232605000074641"'上面不用参数时不出错,但是用参数时,就提示错误“必须声明表变量”DimspAsNewSqlParameter("@zhanghao","ZD6217232605000074641")cmd.CommandType=cmdTypecmd.Connection=conncmd.Parameters.Add(sp)sqlAdapter=NewSqlDataAdapter(cmd)'实例化adapterTrysqlAdapter.Fill(ds)'用adapter将dataSet填充dt=ds.Tables(0)'datatable为dataSet的第一个表cmd.Parameters.Clear()'清除参数CatchexAsException'MsgBox("查询失败",CType(vbOKOnly+MsgBoxStyle.Exclamation,MsgBoxStyle),"警告")MessageBox.Show(ex.Message,"请注意",MessageBoxButtons.OK,MessageBoxIcon.Stop)Finally'最后一定要销毁cmdCallCloseCmd(cmd)EndTryReturndtEndFunction
这是SQL报错@zhanghao这个变量没有声明.如果声明变量的语句在cmdText中的话那么你cmd.CommandText="SELECTCount(对方账号)AS次数from@zhanghao"这一句应该写成cmd.CommandText="SELECTCount(对方账号)AS次数from@zhanghao"另外两句SQL之间应该用";"来分开
解决方案四:
引用2楼lovesan的回复:
这是SQL报错@zhanghao这个变量没有声明.如果声明变量的语句在cmdText中的话那么你cmd.CommandText="SELECTCount(对方账号)AS次数from@zhanghao"这一句应该写成cmd.CommandText="SELECTCount(对方账号)AS次数from@zhanghao"另外两句SQL之间应该用";"来分开
上面错了应该是写成cmd.CommandText+="SELECTCount(对方账号)AS次数from@zhanghao"
解决方案五:
SQL中只有值才能用变量;表名、字段名是不能用变量的,必须直接拼到SQL语句中。标准就是这样!
解决方案六:
你要查询的是表名啊,表名不能用变量代替,必须直接写。