作者mcdstyle (静止)
看板C_Sharp
标题Re: [问题] 抓值~高手帮一下
时间Sun Jan 30 13:11:53 2011
※ 引述《b9433056 (阿哩唷 ^.^ )》之铭言:
: 目前个有资料库里面有张资料表
: 资料表一共五个栏位资料表如下
: -------------------------------
: | key | no1 | no2 | no3 | no4 |
: -------------------------------
: 001 1 A 1 1
: 002 1 A 1 2
: 003 1 B 1 1
: 004 1 B 1 2
: . . . . .
: . . . . .
: . . . . .
: . . . . .
: 现在我有no1、no2、no3、no4的值
: 我要以上面的值来查询资料表的key
: ex:输入值 no1=1 no2=1 no3=1 no4=1
: 查询结果001
: 我该怎麽做?
: 挤破头了想不太出来~麻烦各位神通们帮帮忙
: 各位大大这是目前用vb的写法~~下次还要用c#重写
: For i As Integer = 0 To N - 1
: Dim lsn As Integer = 0
: Cmd = New OleDbCommand("select key from [dbo].[lite_loc]
: Where no1=" + Q(i).no1 + " And no2='" + Q(i).no2 + "' And
: no3=" + Q(i).no3 + " And no4=" + Q(i)no4, Con)
: Cmd.ExecuteNonQuery() '执行Command
: 筛选出来的key值要给变数KEY
: 那KEY的值应该怎麽设定?
你得到的错误,很明显的,查询语法有问题,来看一下:
"select key from [dbo].[lite_loc]
Where no1=" + Q(i).no1 + " And no2='" + Q(i).no2
no3=" + Q(i).no3 + " And no4=" + Q(i)no4
假设Q(i).no1为1
Q(i).no2为2
Q(i).no3为3
Q(i).no4为4
程式送出的sql command会是
select key from [dbo].[lite_loc] Where no1=1 And no2='2' And no3=3 And no4=4
如果no1 ~ no4栏位型态都是数字,那应该不会有问题,但是如果no1,no3或
no4其中一个是空值的话,就会有问题,如果no1为null的话,sql command会
变成:
select key from [dbo].[lite_loc]
Where no1= And no2='2' And no3=3 And no4=4
这样就会有问题。
你可以在Cmd.ExecuteNonQuery()这行前,宣告一个string去取得Cmd.CommandText
然後设个中断点,就可以知道到底sql command是长怎样了。
另外,要取得查寻结果,应该要用ExecuteReader(),而不是ExecuteNonQuery()
,它会回传OleDbDataReader,你要的资料会在里面。
OleDbDataReader的用法,可以参考MSDN
http://msdn.microsoft.com/zh-tw/library/stkwe6zb(v=VS.80).aspx
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.24.139.38