我想從MySQL中獲取一些值 - 列作爲行和viceversa - 以顯示在DataGridView
上。我有這樣的代碼,應在MySQL-MySql在VB.net中執行Set和Concat語句
SET @header = CONCAT('SELECT \'sl\', ',
(SELECT GROUP_CONCAT(CONCAT(' \'', sl, '\'')) FROM cars where sl=1),
' LIMIT 0, 0');
SET @a = -1;
SET @line1 = CONCAT(
'SELECT \'Plate\',',
(
SELECT GROUP_CONCAT(
CONCAT(' (SELECT Plate FROM cars LIMIT ',
@a:[email protected]+1,
', 1)')
)
FROM cars where sl=1
));
SET @a := -1;
SET @line2 = CONCAT(
'SELECT \'Brand\',',
(
SELECT GROUP_CONCAT(
CONCAT(' (SELECT Brand FROM cars LIMIT ',
@a:[email protected]+1,
', 1)')
)
FROM cars where sl=1
));
SET @query = CONCAT('(',
@header,
') UNION (',
@line1,
') UNION (',
@line2,
')'
);
PREPARE my_query FROM @query;
EXECUTE my_query;
立即運行,當我嘗試通過ExecuteNonQuery
命令通過保存所有這些代碼在一個字符串來運行這個,我得到了MySQLException
無差錯Fatal error encountered during command execution.
我試圖將代碼拆分爲單獨的字符串,但彈出同樣的錯誤。也試圖增加CommandTimeout
,但沒有奏效。
是否有任何特殊的方式來運行這些語句?或者是否有任何代碼問題?請注意,這可以在命令行客戶端沒有任何錯誤的情況下有效運行。
PS:該代碼是從,Q#3288014使用 - 由於ANAX
編輯:
我發現周圍的工作,以同樣的事情,但都在VB中完成。
Dim sa() As String = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
Dim sa2() As String = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
connect()
Dim reader As MySqlDataReader
execstr = "describe cars"
Dim cmd As New MySqlCommand(execstr, connection)
reader = cmd.ExecuteReader()
Dim i As Integer = 0
While reader.Read
sa(i) = reader.GetString(0)
i = i + 1
End While
reader.Close()
connection.Close()
connect()
execstr = "select*from cars where sl=1;"
Dim cmd2 As New MySqlCommand(execstr, connection)
reader = cmd2.ExecuteReader()
While reader.Read
For i1 As Integer = 0 To sa.Length - 1
sa2(i1) = reader.GetString(i1)
Next
End While
reader.Close()
connection.Close()
reader.Close()
connection.Close()
Dim t As New DataTable
t.Columns.Add(sa(0))
t.Columns.Add(sa2(0))
For y As Integer = 1 To sa.Length - 1
t.Rows.Add(sa(y), sa2(y))
Next
DataGridView1.DataSource = t
有趣的是,發現MySQL中所有可以在字符串中完成的事情,都需要VB中的代碼。
那麼通過vb.net運行這些命令的方式是什麼? – user2086396
您不能直接運行這些命令。您必須在數據庫中創建一個存儲過程來執行此操作,或者您可以在VB中分解peices以執行此操作,因爲它只是構建一個字符串。 ... – Steve
昏暗S作爲字符串=「 'SELECT \' 板\ ' ' ( SELECT GROUP_CONCAT( CONCAT('(SELECT壓板從汽車LIMIT', @a:= @一個+ 1, ' ,1)') ) FROM cars where sl = 1 )「 – Steve