查看: 1138|回复: 15
|
ASP.Net OdbcConnection
[复制链接]
|
|
请问有没有简易的方法建立 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 应该也有提供类似的方法吧?
今天是小章鱼最勤劳的一天了,猛发帖,呵呵 |
|
|
|
|
|
|
|
发表于 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 很麻烦……
- MSDN 的例子(汗……几乎没有什么简化嘛)
- adapter.InsertCommand = New OdbcCommand( _
- "INSERT INTO Customers (CustomerID, CompanyName) " & _
- "VALUES (?, ?)")
- adapter.InsertCommand.Parameters.Add( _
- "@CustomerID", OdbcType.Char, 5, "CustomerID")
- adapter.InsertCommand.Parameters.Add( _
- "@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
谢谢 |
|
|
|
|
|
|
|
发表于 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);
这里又操作了一次,变成原来一次的操作变成两次了,不是么?
对不起,小章鱼对资料库和建网没有认识。 |
|
|
|
|
|
|
|
发表于 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
|
显示全部楼层
呵呵,小章鱼对这些一窍不通,只好用古老的方法咯。
不过似乎成效也还可以。 |
|
|
|
|
|
|
| |
本周最热论坛帖子
|