佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 1139|回复: 15

ASP.Net OdbcConnection

[复制链接]
发表于 26-7-2006 11:39 PM | 显示全部楼层 |阅读模式
请问有没有简易的方法建立 SQL Statement 如
"Insert Into myTable(bla, blabla, blablabla......) Values(bla, bla....);"

记得在 ASP 时可以用 RecordSet 来
RecordSet.AddNew()
RecordSet["bla"] = "bla"
RecordSet["blabla"] = "blabla"
RecordSet.Update()

对于很多 fields 时就不会看的偷运转向的,

目前小章鱼是自己建 class 来处理,不过 ASP.Net 应该也有提供类似的方法吧?

今天是小章鱼最勤劳的一天了,猛发帖,呵呵
回复

使用道具 举报


ADVERTISEMENT

发表于 27-7-2006 12:36 PM | 显示全部楼层
原帖由 sson 于 26-7-2006 11:39 PM 发表
请问有没有简易的方法建立 SQL Statement 如
"Insert Into myTable(bla, blabla, blablabla......) Values(bla, bla....);"

记得在 ASP 时可以用 RecordSet 来
RecordSet.AddNew()
RecordSet = & ...


可以尝试用 DataAdapter. 但我比较喜欢自行处理.
回复

使用道具 举报

 楼主| 发表于 27-7-2006 01:08 PM | 显示全部楼层
DataAdapter 很麻烦……
  1. MSDN 的例子(汗……几乎没有什么简化嘛)
  2. adapter.InsertCommand = New OdbcCommand( _
  3.         "INSERT INTO Customers (CustomerID, CompanyName) " & _
  4.          "VALUES (?, ?)")
  5. adapter.InsertCommand.Parameters.Add( _
  6.         "@CustomerID", OdbcType.Char, 5, "CustomerID")
  7.     adapter.InsertCommand.Parameters.Add( _
  8.         "@CompanyName", OdbcType.VarChar, 40, "CompanyName")
复制代码


还是用回自己的 Class 来生成 statement 方便些,呵呵。

还有其它选择么?
回复

使用道具 举报

发表于 27-7-2006 02:39 PM | 显示全部楼层
忘了提起 DataView. DataView 有你要的方法.
回复

使用道具 举报

 楼主| 发表于 27-7-2006 04:19 PM | 显示全部楼层
谢谢,待会试试。
回复

使用道具 举报

 楼主| 发表于 27-7-2006 05:18 PM | 显示全部楼层
对不起,小章鱼领悟能力不好,看过 MSDN 实例后还是不明白,
能否给个简单的例子,如何用 DataView 在 OdbcConnection
谢谢
回复

使用道具 举报

Follow Us
发表于 28-7-2006 01:20 AM | 显示全部楼层
其实不难...

using System.Data;
using System.Data.Odbc;

OdbcConnection myConn = new OdbcConnection("DSN=xxx;uid=xx;pwd=xxx");
OdbcDataAdapter myAdapter = new OdbcDataAdapter();
DataTable ResultTable = new DataTable();
OdbcCommandBuilder myCommandBuilder = new OdbcCommandBuilder(myAdapter);

myConn.Open();

myAdapter.SelectCommand = new OdbcCommand("SELECT * FROM table", myConn);
myAdapter.Fill (ResultTable);

DataView myDV = new DataView(ResultTable);
DataRowView NewRow = myDV.AddNew ();

NewRow ["column1"] = "xxx";
NewRow ["column2"] = 1;

NewRow.EndEdit();
                               
myAdapter.Update (myDV.Table);
myConn.Close();

myAdapter = null;
myConn = null;
回复

使用道具 举报

 楼主| 发表于 28-7-2006 01:39 AM | 显示全部楼层
谢谢你的例子,不过小章鱼对这行有疑问:
myAdapter.SelectCommand = new OdbcCommand("SELECT * FROM table", myConn);
酱子不是预先对资料库操作了一次么?

NewRow.EndEdit();
myAdapter.Update (myDV.Table);

这里又操作了一次,变成原来一次的操作变成两次了,不是么?

对不起,小章鱼对资料库和建网没有认识。
回复

使用道具 举报


ADVERTISEMENT

发表于 28-7-2006 08:54 AM | 显示全部楼层
fill的时候才从database对dataset填充了一次,
至于dataset,那只是local 的 in-memory table,无论你做什么它都不会对database起任何动作,直到adapter的update,才执行adapter里的insert/update command.这时候才真正的和database有关
回复

使用道具 举报

 楼主| 发表于 28-7-2006 10:58 AM | 显示全部楼层
astral 小章鱼不明白,
fill的时候才从database对dataset填充了一次,
这不是操作了一次吗?
update 时又一次,合计不是两次了吗?

本来小章鱼只需要执行 "Insert Into....." 操作一次而已。
回复

使用道具 举报

发表于 28-7-2006 01:53 PM | 显示全部楼层
原帖由 sson 于 28-7-2006 10:58 AM 发表
astral 小章鱼不明白,
fill的时候才从database对dataset填充了一次,
这不是操作了一次吗?
update 时又一次,合计不是两次了吗?

本来小章鱼只需要执行 "Insert Into....." 操作一次而已。


你可以不用fill
直接加入datatable,然后call update(datatable)

eg:
Dim row As DataSet1.UsageRow = DataSet11.Usage.NewRow
row.UniqueID = Guid.NewGuid
row.UserName = "haha"
DataSet11.Usage.Rows.Add(row)
OleDbDataAdapter1.Update(DataSet11.Usage)
回复

使用道具 举报

 楼主| 发表于 28-7-2006 02:14 PM | 显示全部楼层
astral DataSet1 是 DataSet 吧?
小章鱼建立了 DataSet 对象,可是其没有 UsageRow/Usage 这项?
回复

使用道具 举报

发表于 28-7-2006 02:52 PM | 显示全部楼层
原帖由 sson 于 28-7-2006 02:14 PM 发表
astral DataSet1 是 DataSet 吧?
小章鱼建立了 DataSet 对象,可是其没有 UsageRow/Usage 这项?

不好意思,那个是我随便create的typed dataset...
usage 是里头的一个datatable, usagerow是datarow
回复

使用道具 举报

 楼主| 发表于 4-8-2006 03:47 AM | 显示全部楼层
astral 不行耶,试了好几天,脑里的方法试尽了,还是无法在没有 Fill 的情况下使用 DataTable/DataView ……

现在使用自己造的 SQLCommandBuilder ,效果应该没问题。
等如果出现缓慢等问题时再试试吧。

不过还是希望你可以提供此方法的完整代码,谢谢。
小章鱼的理解能力有限,请见谅
回复

使用道具 举报

发表于 4-8-2006 09:43 AM | 显示全部楼层
原帖由 sson 于 4-8-2006 03:47 AM 发表
astral 不行耶,试了好几天,脑里的方法试尽了,还是无法在没有 Fill 的情况下使用 DataTable/DataView ……

现在使用自己造的 SQLCommandBuilder ,效果应该没问题。
等如果出现缓慢等问题时再试试吧。

不 ...


目前来说, 我只有这样的方法来做类似 VB6 这样的 insert/update.
通常我 update 会用回自己的 class.

这方法暂时来说对我没有用... 但对于大量的资料更新来说, 会有一定的帮助.
回复

使用道具 举报

 楼主| 发表于 7-8-2006 06:16 PM | 显示全部楼层
呵呵,小章鱼对这些一窍不通,只好用古老的方法咯。
不过似乎成效也还可以。
回复

使用道具 举报


ADVERTISEMENT

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 23-9-2024 09:36 AM , Processed in 0.127333 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表