2012-08-30 63 views
0

我剛剛以編程方式創建了一個表。我將它命名爲我的文本框值。選擇表取決於文本框的值

例子:

Create table " & Textbox1.text & " + ...... 

我想根據我的文本框的值設置我的表名。

Select TaskNumber,Name,Age From '" & Textbox1.text & "' " 
+3

問題是什麼? –

+0

您已經開放SQL注入。考慮用戶輸入:'TableName'; drop table ImportantTable - ' –

+0

根據我的文本框值選擇表名的正確語法。 –

回答

0

最好的初步實踐將是把你的文本框的值的變量:

Dim myTableName As String 
    myTableName = TexBox1.text 

    // SQL Connection 
    Dim conStr As String = "Server=MyServer;Database=Mydatabase;Trusted_Connection = yes" 
    Dim objCon As New SqlConnection(conStr) 
    Dim obj As SqlCommand 
    Dim strSQL as String 
    obj = objConn.CreateCommand() 

    // *************** Select statement ********* 
    strSQL = "SELECT TaskNumber, Name, Age FROM " & myTableName 

    // **************** Create statement ********* 
    strSQL = "CREATE TABLE " & myTableName & "(" & _ 
    "Id int NOT NULL PRIMARY KEY IDENTITY, " & _ 
    "ColumnTest VARCHAR(30)) " 

    // Execute the command 
    obj.CommandText = strSQL 
    obj.ExecuteNonQuery() 
+0

我總是有錯誤 'FROM'附近的語法不正確。 –

+0

只需嘗試一個SELECT * FROM myTableName – TrizZz

0

試試這個:

Dim query AS String = "Select TaskNumber,Name,Age From " & Textbox1.Text.Trim().Replace("'","") 

.Replace( 「」「, 」「)將防止由於TextBox文本中存在單引號引起的SQL注入攻擊。

我會建議你在你的TextBox上使用RegularExpressionValidator來限制允許的字符。