Datagridview保存更改为数据库vb.net
问题描述:
你好我有一个数据库,我加载到vb.net应用程序Datagridview。 它加载正常,但是当我尝试保存日期不起作用。 这里是代码当新行传递的DataRow集合Datagridview保存更改为数据库vb.net
Private myConString As String
Private con As OleDbConnection = New OleDbConnection
Private Dadapter As OleDbDataAdapter
Private DSet As DataSet
Private DSet2 As DataSet
Private ConCMD As OleDb.OleDbCommand
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
myConString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=e:\Database31.accdb"
con.ConnectionString = myConString
con.Open()
Dadapter = New OleDbDataAdapter("select * from Table1", con)
DSet = New DataSet
Dadapter.Fill(DSet, "Table1")
DataGridView1.DataSource = DSet.Tables("Table1")
con.Close()
End Sub
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
con.Open()
Dadapter.Update(DSet, "Table1")
DSet.AcceptChanges()
con.Close()
End Sub
更新需要有效的InsertCommand。 我该怎么办?
的accessdatabase 3个colmuns ID是主键 ID字段1字段2
答
所以,你必须定义一个InsertCommand
你DataAdapter
侧面说明:该生产线DSet.AcceptChanges()
是多余的,因为前行Dadapter.Update
将调用隐含地表示为AcceptChanges
。
您应该使用using-statement
来执行任何类似Connection的IDisposable
。即使发生异常,也会隐含地调用Dispose
(即关闭连接)。
所以更换:
con.Open()
Dadapter.Update(DSet, "Table1")
DSet.AcceptChanges()
con.Close()
与
Using con = New OleDbConnection(myConString)
con .Open()
Dadapter.Update(DSet, "Table1")
End Using
答
您需要从DataGrid读回的数据集
con.Open()
DSet = DataGridView1.DataSource '<<<<<<<<<<<<<<<<<<<<<<<
Dadapter.Update(DSet, "Table1")
DSet.AcceptChanges()
con.Close()
答
为4型数据库我的VB.NET代码(从DataGridView到数据库的更新信息)
Private Sub sqldb_savedata()
Dim connectionString As String = "Server='" & sql_server & "';Database='" & sql_database & "';User Id='" & sql_user & "';Password='" & sql_pass & "'"
Dim sqlCon = New SqlConnection(connectionString)
If (sqlCon.State = ConnectionState.Closed) Then sqlCon.Open()
Dim SQLAdapter = New SqlDataAdapter("SELECT * FROM clinics", sqlCon)
Dim SQLDataSet As New DataSet
Dim myTable = DataGridViewClinic.DataSource
Dim cmdbuilder As New SqlCommandBuilder(SQLAdapter)
SQLAdapter.Update(myTable, "clinics")
MsgBox("Updated!", MsgBoxStyle.OkOnly, "")
End Sub
Private Sub mysqldb_savedata()
Dim connectionString As String = "Server='" & mysql_server & "';Database='" & mysql_database & "';User Id='" & mysql_user & "';Password='" & mysql_pass & "'"
Dim sqlCon = New MySqlConnection(connectionString)
If (sqlCon.State = ConnectionState.Closed) Then sqlCon.Open()
Dim SQLAdapter = New MySqlDataAdapter("SELECT * FROM clinics", sqlCon)
Dim SQLDataSet As New DataSet
Dim myTable = DataGridViewClinic.DataSource
Dim cmdbuilder As New MySqlCommandBuilder(SQLAdapter)
SQLAdapter.Update(myTable, "clinics")
MsgBox("Updated!", MsgBoxStyle.OkOnly, "")
End Sub
Private Sub firebirddb_savedata()
Dim connectionString As String = "Database='" & firebird_server & "';User=SYSDBA;Password=masterkey;Dialect=3;ServerType=1"
Dim sqlCon = New FirebirdSql.Data.FirebirdClient.FbConnection(connectionString)
If (sqlCon.State = ConnectionState.Closed) Then sqlCon.Open()
Dim SQLAdapter = New FirebirdSql.Data.FirebirdClient.FbDataAdapter("SELECT * FROM clinics", sqlCon)
Dim SQLDataSet As New DataSet
Dim myTable = DataGridViewClinic.DataSource
Dim cmdbuilder As New FirebirdClient.FbCommandBuilder(SQLAdapter)
SQLAdapter.Update(myTable, "clinics")
MsgBox("Updated!", MsgBoxStyle.OkOnly, "")
End Sub
Private Sub localdb_savedata()
DBconn = New SqlCeConnection("Data Source=Data Source=|DataDirectory|\Database.sdf")
If (DBconn.State = ConnectionState.Closed) Then DBconn.Open()
Dim SQLAdapter = New SqlCeDataAdapter("SELECT * FROM clinics", DBconn)
Dim SQLDataSet As New DataSet
Dim myTable = DataGridViewClinic.DataSource
Dim cmdbuilder As New SqlCeCommandBuilder(SQLAdapter)
SQLAdapter.Update(myTable, "clinics")
MsgBox("Updated!", MsgBoxStyle.OkOnly, "")
End Sub
谢谢,但仍然是什么插入命令?!我的数据库只有3个字段ID Field1 Field2..so我的插入命令应该如何? – FPGA 2012-07-08 00:10:01
编辑我的答案,为[OleDbDataAdapter.InsertCommand]提供msdn链接(http://msdn.microsoft.com/en-us/library/system.data.oledb.oledbdataadapter.insertcommand%28v=vs.100%29。 ASPX)。有一个sql INSERT语句的例子。 – 2012-07-08 00:13:48
伟大..现在假设我填充了数据网格视图2000个新的值与不同领域的循环..我想保存这是什么是最好的方法来做到这一点?插入应该在循环期间而不是在循环之后? – FPGA 2012-07-08 00:26:09