所以这就是我要做的事情。我有一些数据来填充mysql数据库中的数据表。正如提到的示例项目,我一直从现有的表(名为examquestion)中提取那些执行SELECT查询的细节。我的查询是这样的:
SELECT * FROM entrancequestion
WHERE Subject='Abstract Reasoning'
ORDER BY RAND()
LIMIT 10)
UNION
(SELECT * FROM entrancequestion
WHERE Subject='English'
ORDER BY RAND()
LIMIT 30)
UNION
(SELECT * FROM entrancequestion
WHERE Subject='Mathematics'
ORDER BY RAND()
LIMIT 30)
UNION
(SELECT * FROM entrancequestion
WHERE Subject='Science'
ORDER BY RAND()
LIMIT 30 )
所以所有的数据表总共应该填充100行。
我的问题实际上是将这些数据插入数据表
首先我从数据库中读取数据
dim myqry as string
'where myqry as the codes above
dim examdt as new datatable
Dim conn As New SqlClient.SqlConnection("server=localhost;User Id=root;database=jnhsdb")
Try
conn.Open()
Dim cmd As SqlCommand = New SqlCommand(myqry, conn)
'create data reader
Dim rdr As SqlDataReader = cmd.ExecuteReader
'loop through result set
rdr.Read()
'now im lost on this part.
'i want to insert the data into a data table. i got some code in mind but i think im doing it wrong.
conn.Close()
Catch ex As Exception
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
那么,您如何将这些数据从数据库实际插入数据表?
跟进问题: 是否可以从数据表中创建数据集以及这些查询?
答案 0 :(得分:1)
首先 - 你自相矛盾。您的查询来自MySQL,而您的代码是针对SQL Server的。你必须决定你想要使用什么。如果它确实是MySQL - 您需要安装MySQL.NET连接器。下面的代码几乎相同,只有SQL*
个类,您将使用MySQL*
个类(例如MySqlDataAdapter
而不是SqlDataAdapter
)。
那说:
不要使用DataReader填充DataTable,而是使用DataAdapter。创建SqlCommand后 - 试试这个:
Dim da As New SqlDataAdapter(cmd)
da.Fill(examdt)
稍后如果需要 - 您可以创建一个DataSet并添加此表:
Dim ds As New DataSet
ds.Tables.Add(examdt)
但还有其他方法。例如,上面的SqlDataAdapter的.fill()
方法能够直接填充DataSet而不是DataTable(它将自动创建表)