日期:2014-05-18  浏览次数:20829 次

我太笨了,一个查询都搞不赢【求助】
我想根据文本框输入的三个条件查询

我觉得我的sql语句写错了,不知道怎么改

 private void btn_search_Click(object sender, EventArgs e)
  {  
  DataTable dt = ReceiptsList().Tables[0];
  dGVReceipts.DataSource = dt;
  dGVReceipts.Refresh();
  }

  public DataSet ReceiptsList()
  {
  DataSet ds = new DataSet();
  SqlConnection sqlConn = new SqlConnection("Data Source=KCNQHd1458\\TFS_INSTANCE;Initial Catalog=Receipts;User ID=devtest;PWD=test123 ");
  string strSQL = "select * from Receipts where ReportNo= @RecNo or Branch= @RecBr or Account= @RecAc ";
  SqlCommand sqlcmd = new SqlCommand(strSQL, sqlConn);
  sqlcmd.Parameters.AddWithValue("@RecNo", txtReportID.Text);
  sqlcmd.Parameters.AddWithValue("@RecBr", txtCustomer.Text);
  sqlcmd.Parameters.AddWithValue("@RecAc", comAccount.Text);
  return GetDataSet(strSQL);

  }

文本可视化工具显示是这句
select * from Receipts where ReportNo= @RecNo or Branch= @RecBr or Account= @RecAc

------解决方案--------------------
楼主 原因是bigint长整型数据类型转换为varchar数据类型出现错误


 你改成string strSQL = "select * from Receipts where ReportNo='"+ @RecNo +"' or Branch='"+ @RecBr+"' or Account='"+@RecAc"';
试试

注意引号
------解决方案--------------------
return GetDataSet(strSQL);
我就想说楼主你这个函数传参怎么会传入strSQL呢应该是上面的sqlcmd 不然你哪些给cmd赋值的代码就白写了。。。
所以楼主你从这里去思考应该就可以找到了
------解决方案--------------------
return GetDataSet(strSQL);
明显是这句有问题,你把strSQL传给 GetDataSet(strSQL);有什么用啊? 你前面写的cmd多作废了啊