求救啊!怎么将dataset的新数据更新到数据库中????

Mybox 2005-05-07 10:08:01
怎么将dataset的新数据更新到数据库中????
我将dataset从数据库中读出了一些数据,然后再往dataset里添加了几行新的数据,但是我没法将新的数据更新到数据库中??
...全文
272 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
hsx306 2005-05-09
  • 打赏
  • 举报
回复
以下代码测试通过,绝对可用.

Dim STR_SQL_USER_SELECT As String = _
"SELECT 用户名, 密码 ,姓名, 班组, 电子邮箱 FROM 数据库用户信息 " & _
"WHERE 数据库用户信息.用户名 = '" & name & "'"
Dim STR_SQL_USER_UPDATE As String = _
"UPDATE 数据库用户信息 SET 用户名 = ?, 密码 = ?, 班组=?, 电子邮箱=? " & _
"WHERE 姓名 = ?"
Dim STR_SQL_USER_INSERT As String = _
"INSERT INTO 数据库用户信息 (用户名, 密码 ,姓名, 班组, 电子邮箱) " & _
"VALUES (?,?,?,?,?)"

cnnUser = New OleDbConnection
cnnUser.ConnectionString = PR_STR_CONNECTION_STRING
cnnUser.Open()

dadUser = New OleDbDataAdapter

' Create the SelectCommand.
cmmUser = New OleDbCommand(STR_SQL_USER_SELECT, cnnUser)
cmmUser.Parameters.Add("用户名", OleDbType.VarChar, 15)
dadUser.SelectCommand = cmmUser

' Create the UpdateCommand.
cmmUser = New OleDbCommand(STR_SQL_USER_UPDATE, cnnUser)
cmmUser.Parameters.Add("用户名", OleDbType.Char, 5, "用户名")
cmmUser.Parameters.Add("密码", OleDbType.Char, 5, "密码")
cmmUser.Parameters.Add("班组", OleDbType.Char, 5, "班组")
cmmUser.Parameters.Add("电子邮箱", OleDbType.VarChar, 40, "电子邮箱")
prmUser = cmmUser.Parameters.Add("姓名", OleDbType.Char, 5, "姓名")
prmUser.SourceVersion = DataRowVersion.Original
dadUser.UpdateCommand = cmmUser

' Create the InsertCommand.
cmmUser = New OleDbCommand(STR_SQL_USER_INSERT, cnnUser)
cmmUser.Parameters.Add("用户名", OleDbType.Char, 5, "用户名")
cmmUser.Parameters.Add("密码", OleDbType.Char, 5, "密码")
cmmUser.Parameters.Add("姓名", OleDbType.Char, 5, "姓名")
cmmUser.Parameters.Add("班组", OleDbType.Char, 5, "班组")
cmmUser.Parameters.Add("电子邮箱", OleDbType.VarChar, 40, "电子邮箱")
dadUser.InsertCommand = cmmUser

dstUser = New DataSet
Try
dadUser.Fill(dstUser)
Catch OleDbExceptionErr As Exception
MessageBox.Show(OleDbExceptionErr.Message, "生产管理数据库")
End Try

'数据处理代码

dstUser.Tables(0).GetChanges()

'定义临时变量dstUserChange
Dim dstUserChange As DataSet

dstUserChange = dstUser.GetChanges
If dstUserChange.HasErrors Then '防错处理
dadUser.Update(dstUser)
End If
Overriding 2005-05-08
  • 打赏
  • 举报
回复
那个是拼凑sql语句.
Mybox 2005-05-08
  • 打赏
  • 举报
回复
da.InsertCommand = new SqlCommand("insert int tablename(id) values("+id+" , conn);
这句有点不懂??为什么要用“+ d+ ”?
my36z 2005-05-08
  • 打赏
  • 举报
回复
你是不是要用.update来更新阿
不要忘了dim commandbuild as new sqlcommandbuilder(sqladapater)
Mybox 2005-05-08
  • 打赏
  • 举报
回复
不行啊??
andy_lsh 2005-05-08
  • 打赏
  • 举报
回复
用dataset.AcceptChanges()这个就应该可以,
你再试试!
hidejay 2005-05-08
  • 打赏
  • 举报
回复
给你个函数,参数是SQL文,是ORACLE的,SQL的稍微改改就可以
Private Function funQueryData(ByVal strsql As String) As DataSet
Dim oraConn As OracleClient.OracleConnection '数据库连接变量
Dim oraCmd As New OracleClient.OracleCommand '数据库执行变量
Dim strMsg() As String '报错信息
Try
'数据库连接
oraConn = openFreeConnect()
'设定数据库执行变量
With oraCmd
'设定连接句柄
.Connection = oraConn
'设定SQL文
.CommandText = strsql
End With
'查询数据库
funQueryData = dataSelect(oraCmd)
Catch ex As Exception
'报错
Throw New System.Exception(ex.Message)
'showMessage(strMsg, ex.Message, 16)
Exit Function
Finally
'关闭数据库连接
Call closeFreeConnect(oraConn)
End Try
End Function
singlepine 2005-05-07
  • 打赏
  • 举报
回复
private void update(string id)
{
string link = ConfigurationSettings.AppSettings["link_local"].ToString();
SqlConnection conn = new SqlConnection(link);
SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM tablename where id="+id, conn);
DataSet ds = new DataSet();
da.Fill(ds);
if(ds.Tables[0].Rows.count>0)//大于0表示是你原来的数据,需要更新就更新,不需要就不作处理
{
da.UpdateCommand = new SqlCommand("UPDATE tablename ..." , conn);
da.Update(ds.Tables[0]);
}
else//如果没找到,则是你新增的,此时存入数据库
{
da.InsertCommand = new SqlCommand("insert int tablename(id) values("+id+" , conn);
da.Update(ds.Tables[0]);
}
}

16,720

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧