ADO.NET 2.0 利用 partial class 擴充 TableAdapter method
2013-06-07 17:21
423 查看
TableAdapter如下:
C# Code
使用方式如下:
C# Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 | namespace ABCTableAdapters { public class myBOOTableAdapter : BOOTableAdapter { public myBOOTableAdapter() { this.conn = (SqlConnection)getConnFactory.GetDBConnection(); } } public partial class BOOTableAdapter { protected SqlConnection conn = new SqlConnection(); private SqlDataAdapter m_myAdapter; protected SqlDataAdapter myAdapter { get { if (this.m_myAdapter == null) { this.m_myAdapter = new SqlDataAdapter(); this.InitAdapter(); DataTableMapping tableMapping = new DataTableMapping(); tableMapping.SourceTable = "Table"; tableMapping.DataSetTable = "BOO"; for (int i = 0; i < _adapter.TableMappings[0].ColumnMappings.Count; i++) tableMapping.ColumnMappings.Add(_adapter.TableMappings[0].ColumnMappings[i].SourceColumn, _adapter.TableMappings[0].ColumnMappings[i].DataSetColumn); m_myAdapter.TableMappings.Add(tableMapping); } return this.m_myAdapter; } } //給 gridview 用的 select metohd [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Select, true)] public virtual ABC.BOODataTable myGetDatabyCond(string key_field, string is_enable) { string sqlStr = @" SELECT * FROM BOO WHERE (key_field = @key_field OR ISNULL(@key_field, '') = '') AND (is_enable = @is_enable OR ISNULL(@is_enable, '') = '') "; SqlCommand cmd = new SqlCommand(sqlStr, conn); cmd.CommandType = System.Data.CommandType.Text; cmd.Parameters.Add(new SqlParameter("@key_field", SqlDbType.VarChar, 7, ParameterDirection.Input, 0, 0, "key_field", DataRowVersion.Current, false, key_field == null ? "" : key_field, "", "", "")); cmd.Parameters.Add(new SqlParameter("@is_enable", SqlDbType.VarChar, 1, ParameterDirection.Input, 0, 0, "is_enable", DataRowVersion.Current, false, is_enable == null ? "" : is_enable, "", "", "")); myAdapter.SelectCommand = cmd; ABC.BOODataTable dataTable = new ABC.BOODataTable(); myAdapter.Fill(dataTable); return dataTable; } //取某一個 row 的 metohd public virtual ABC.BOORow myGetDataRow(string key_field) { ABC.BOODataTable dt = this.myGetDatabyCond(key_field,""); if (dt.Rows.Count > 0) return (ABC.BOORow)dt.Rows[0]; else return null; } //批次update 一個 row 的 metohd public virtual int myUpdate(Training.HR_Training_Std_CourseRow row) { myAdapter.UpdateCommand = new SqlCommand(); myAdapter.UpdateCommand.Connection = conn; myAdapter.UpdateCommand.CommandText = @" UPDATE BOO SET field2 = @field2 WHERE (key_field = @key_field); "; myAdapter.UpdateCommand.CommandType = CommandType.Text; myAdapter.UpdateCommand.Parameters.Add(new SqlParameter("@key_field", SqlDbType.VarChar, 7, ParameterDirection.Input, 0, 0, "key_field", DataRowVersion.Current, false, null, "", "", "")); myAdapter.UpdateCommand.Parameters.Add(new SqlParameter("@field2", SqlDbType.NVarChar, 10, ParameterDirection.Input, 0, 0, "field2", DataRowVersion.Current, false, null, "", "", "")); myAdapter.InsertCommand = new SqlCommand(); myAdapter.InsertCommand.Connection = conn; myAdapter.InsertCommand.CommandText = @" INSERT INTO BOO ([key_field], [field2]) VALUES (@key_field, @field2); "; myAdapter.InsertCommand.CommandType = CommandType.Text; myAdapter.InsertCommand.Parameters.Add(new SqlParameter("@key_field", SqlDbType.VarChar, 7, ParameterDirection.Input, 0, 0, "key_field", DataRowVersion.Current, false, null, "", "", "")); myAdapter.InsertCommand.Parameters.Add(new SqlParameter("@field2", SqlDbType.NVarChar, 10, ParameterDirection.Input, 0, 0, "field2", DataRowVersion.Current, false, null, "", "", "")); DataRow[] row_arr = new DataRow[1]; row_arr[0] = (DataRow)row; try { int returnValue = myAdapter.Update(row_arr); return returnValue; } finally { myAdapter.InsertCommand.Connection.Close(); myAdapter.UpdateCommand.Connection.Close(); } } //call sql stored procedure 的 methd public int ImportData(string modify_user) { BaseBLL bl = new BaseBLL(); SqlParameter[] sp = { new SqlParameter("@modify_user", SqlDbType.VarChar, 10, ParameterDirection.Input, 0, 0, "modify_user", DataRowVersion.Current, false, modify_user, "", "", "") }; int r = bl.ExecuteByStoredProcedure("sp_Import_BOO", sp); return r; } } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | // 給Server 端 asp.net 程式使用 ABCTableAdapters.myBOOTableAdapter da = new ABCTableAdapters.myBOOTableAdapter(); ABC.BOODataTable dt = new ABC.BOODataTable(); ABC.BOORow row; // update //row = da.myGetDataRow(key_field.Text,); //dt.AddBOORow(row); // insert row = dt.NewBOORow(); row.field2 = field2.Text; da.myUpdate(row) // 給Gridview 用的 ObjectDataSource <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" OldValuesParameterFormatString="original_{0}" SelectMethod="myGetDatabyCond" TypeName="ABCTableAdapters.myBOOTableAdapter" onselected="ObjectDataSource1_Selected"> <SelectParameters> <asp:ControlParameter ControlID="Qtxtkey_field" Name="key_field" PropertyName="Text" Type="String" /> <asp:ControlParameter ControlID="Qtxtis_enable" Name="is_enable" PropertyName="Text" Type="String" /> </SelectParameters> </asp:ObjectDataSource> |
相关文章推荐
- Ado.net快马加鞭 利用2.0新特性
- c# sqlite 数据库加密2010-05-29 10:55用了ADO.NET 2.0 SQLite Data Provider 这样可以直接利用它来创建一个加密的sqlite数据库。
- c# asp.net 2.0 tableadapter 动态 dynamic sql语句
- 第四课 ADO.NET 利用sqldataadapter来进行增,删,改操作。
- c# sqlite 数据库加密2010-05-29 10:55用了ADO.NET 2.0 SQLite Data Provider 这样可以直接利用它来创建一个加密的sqlite数据库。
- Scott Mitchell 的ASP.NET 2.0数据教程之69:在TableAdapter里使用JOINs
- 让 ADO.NET 2.0 的 SqlCommand 和 SqlDataAdapter 合作
- 让 ADO.NET 2.0 的 SqlCommand 和 SqlDataAdapter 合作
- ADO.NET2.0 异步处理的三种方式-wait方法
- Action Method Selection in ASP.NET MVC 2.0
- 转:ASP.NET 2.0利用Httphandler实现URL重写(伪URL及伪静态)
- 使用ADO.NET2.0提升数据交互性能(2)
- ADO.NET 2.0 中的新增 DataSet 功能
- ASP.NET 2.0利用Httphandler实现URL重写(伪URL及伪静态)(转)
- 使用ADO.NET2.0提升数据交互性能(1)
- ADO.NET - 1.基础(SqlCommand\ExecuteScalar\ExecuteReader\sqlDataAdapter)
- .NET数据库编程求索之路--4.使用ADO.NET实现(三层架构篇-使用Table传递数据)(5)
- 正确利用 ADO.NET
- 利用C#创建 IIS 站点并设置.NET Framework版本为ASP.NET 2.0 的方法(一)
- 在.NET中利用SQLite ADO.NET使用SQLite数据库