我想運行一個選擇命令,并且我有一個填充了資料庫表名稱的下拉串列。select命令怎么寫?這是我的代碼
Dim da As New OdbcDataAdapter("select table_name from INFORMATION_SCHEMA.tables WHERE TABLE_TYPE = 'BASE TABLE' and table_schema='public'", dbcon.con)
Dim dt As New DataTable
da.Fill(dt)
ddltablename.DataSource = dt
ddltablename.DataTextField = "table_name"
ddltablename.DataValueField = "table_name"
ddltablename.DataBind()
End Sub
Protected Sub btndump_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btndump.Click
Dim da As New OdbcDataAdapter("select * from ddltablename.SelectedItem.tostring", dbcon.con)
Dim ds As New DataSet
da.Fill(ds)
End Sub
uj5u.com熱心網友回復:
當然,讓我們放入組合框,然后放入 gridview。
像這樣:
<asp:DropDownList ID="cboTables" runat="server" Height="31px" Width="179px"
DataTextField ="table_name"
DataValueField ="table_name" Rows="50" >
</asp:DropDownList>
<asp:Button ID="cmdShowTables" runat="server" Text="Show Selected table" Width="175px" style="margin-left:25px"/>
<br />
<br />
<asp:GridView ID="GridView1" runat="server"></asp:GridView>
因此我們的代碼可以是:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not IsPostBack Then
Dim strSQL As String =
"SELECT table_name from INFORMATION_SCHEMA.tables " &
"WHERE TABLE_TYPE = 'BASE TABLE' ORDER BY table_name"
cboTables.DataSource = MyRst(strSQL)
cboTables.DataBind()
End If
End Sub
Protected Sub cmdShowTables_Click(sender As Object, e As EventArgs) Handles cmdShowTables.Click
Dim rst As New DataTable
rst = MyRst("SELECT * from " & cboTables.SelectedItem.Value)
'GridView1.DataSource
GridView1.DataSource = rst
GridView1.DataBind()
End Sub
Function MyRst(strSQL As String) As DataTable
Dim rstData As New DataTable
Using conn As New OdbcConnection(My.Settings.TEST3ODBC)
Using cmdSQL As New OdbcCommand(strSQL, conn)
conn.Open()
rstData.Load(cmdSQL.ExecuteReader)
End Using
End Using
Return rstData
End Function
輸出:

或者你可以說這樣做:
Dim rst As New DataTable
rst = MyRst("SELECT * from " & cboTables.SelectedItem.Value)
For Each OneRow as DataRow in rst.rows
debug.print ("Hotel Name = " & OneRow("HoteName").ToString())
Next
uj5u.com熱心網友回復:
大概是這樣的:
Protected Sub btndump_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btndump.Click
Dim tableName = ddltablename.SelectedItem.ToString();
' It would be prudent to create a function to verify table names against a
' whitelist before sending it, since generating a sql command
' using string concatenation carries the risk of sql injection
Dim da As New OdbcDataAdapter("select * from " & tableName & ";", dbcon.con)
Dim ds As New DataSet
da.Fill(ds)
End Sub
獲取控制元件的值ddltablename必須在應用程式背景關系中完成,而不是在 SQL 命令中。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/335609.html
標籤:asp.net PostgreSQL 网络
上一篇:c#遞回查找最大值(最快)
