目前情况是这样地:
数据库为:access 不支持储过程..
使用VS2005新的特性 强类型Dataset.新建一个TableAdapter 后需要建其它SQl语句.问题来了.
目前只知道需要传参数只能通过这样的SQL语句写法:
select * from user where age >?
这样自动会生成一个方法名为:xxx(age)查询
但如果需要实现:select top 100 * from user where age in (20,30)这样的语句就不能以:
select top ? from user where age in(?) 或
select top ? from user where age in (?,?)
查过不少资料好像还是不行..这种情况很多都是通过储过程实现.有人知道吗???
数据库为:access 不支持储过程..
使用VS2005新的特性 强类型Dataset.新建一个TableAdapter 后需要建其它SQl语句.问题来了.
目前只知道需要传参数只能通过这样的SQL语句写法:
select * from user where age >?
这样自动会生成一个方法名为:xxx(age)查询
但如果需要实现:select top 100 * from user where age in (20,30)这样的语句就不能以:
select top ? from user where age in(?) 或
select top ? from user where age in (?,?)
查过不少资料好像还是不行..这种情况很多都是通过储过程实现.有人知道吗???
dim s as string="20,30"
dim i as int32=100sql="select top "& i & " * from tb where age in (" & s &")"这样可以吧
你是说access参数化参数下查询吧?在VB下我做过,asp.net还下没弄过,手边没有代码,明天上班找一下
这个到不知道.可不可行...
先在ACCESS中建好参数化查询.再在VS2005的强类型Dataset中使用
这个到不知道.可不可行...
先在ACCESS中建好参数化查询.再在VS2005的强类型Dataset中使用
--------------------
我明白你的意思,比如在access查询页中建立一个查询:select * from tb where id=?
然后在程序中象调用存储过程一样,传入参数,返回dataset
VB中可以通过,要用关键字指定调用的是参数查询,调用方法和SQL的存储过程一样。因为才转.NRT,没试过。我想应该可以吧
[Visual Basic]
Dim sql As String = "SELECT * FROM Table1 WHERE Field1 LIKE ?"
Dim cmd As OleDbCommand = New OleDbCommand(sql, oracleConn)
cmd.Parameters.Add("@p1", OleDbType.Char, 3).Value = "a"
Dim dr As OleDbDataReader = cmd.ExecuteReader()
[C#]
string sql = "SELECT * FROM Table1 WHERE Field1 LIKE ?";
OleDbCommand cmd = new OleDbCommand(sql, oracleConn);
cmd.Parameters.Add("@p1", OleDbType.Char, 3).Value = "a";
OleDbDataReader dr = cmd.ExecuteReader();我在vs2005试了一下:
在access中建立一个名称为q_tb的查询:select * from tb where ID=@1
vb.net代码:
Dim sConnect As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\test_db.mdb"
Dim cn As OleDbConnection = New OleDbConnection(sConnect)
Dim cmd As OleDbCommand = New OleDbCommand("q_tb", cn)
Dim p As Integer = 3
cn.Open()
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.Add(New OleDbParameter("@1", OleDbType.BigInt, 4)).Value = p
Dim dr As OleDbDataReader = cmd.ExecuteReader()
While dr.Read()
Console.WriteLine(dr.Item(1))
End While
dr.Close()
cn.Close()
返回结果正确
据我以往所知,access参数化查询中给参数赋值,如果有多个参数,则先后次序不能颠倒,不然很可能出错
我试了在access 里建查询
select top a * from [user] order by b
不行.语法不对