首页编程oledbcommand?OleDbCommandBuilder对数据库的操作

oledbcommand?OleDbCommandBuilder对数据库的操作

编程之家2023-11-03108次浏览

大家好,今天我将为大家揭秘oledbcommand和OleDbCommandBuilder对数据库的操作的奥秘,希望我的分享能给你带来新的启发和知识。

oledbcommand?OleDbCommandBuilder对数据库的操作

vb.net OleDbCommand更新access数据库的奇怪问题!

以下是模块模块1

完整的模块

进口System.Data

进口System.IO

进口System.Data.OleDb

CN作为新OleDb.OleDbConnection(供应商= Microsoft.Jet.OLEDB.4.0;数据源= C:\ ACCESS数据库的。mdb“)'定义连接---改变到实际的数据库路径和名称

oledbcommand?OleDbCommandBuilder对数据库的操作

DataBaseRST上的作为整数使用返回数据库执行的结果

的公共功能DataModify(BYVAL str作为字符串)作为布尔数据库的操作功能

昏暗的cmdinsert作为新的OleDbCommand

尝试

cmdinsert.CommandText= STR

是用来返回cmdinsert.Connection的= CN

oledbcommand?OleDbCommandBuilder对数据库的操作

如果cn.State= ConnectionState.Closed cn.Open()

DataBaseRST cmdinsert.ExecuteNonQuery()的执行结果 BR/> cn.Close()

,则返回true

赶上前为异常

MessageBox.Show(Err.Description,“错误”,MessageBoxButtons.OK,MessageBoxIcon.Error)

返回False

尝试

端的功能

功能搜索(BYVAL作为字符串,BYVAL的DGV作为DataGridView的)作为布尔查询STR---查询命令,DGV---海峡和DataGridView控件来显示数据

昏暗的结核病新的DataTable

昏暗的AP尝试作为的新OleDb.OleDbDataAdapter(STR,CN)

ap.Fill(TB)

DGV作为数据源= TB

返回TRUE,“

抓住前异常

MessageBox.Show(Err.Description,”错误“,MessageBoxButtons.OK,MessageBoxIcon.Error)

则返回false/>末尝试

功能

前端模块

以下是通话

DataModify(“插入AA值吗?('1','2')“)-------这里是数据库更新操作。

搜索(”选择BB AA“DataGridView1的)-----------数据表的查询操作。

OleDbCommandBuilder对数据库的操作

给你个完整的数据库操作类

using System;

using System.Collections.Generic;

using System.Text;

using System.Data.OleDb;

using System.Configuration;

using System.Data;

namespace AutoEmailSender

{

///<summary>

///数据库交互类

///</summary>

public class DB

{

///<summary>

///获得数据库连接

///</summary>

///<returns></returns>

public static OleDbConnection GetDBConnection()

{

return new OleDbConnection(ConfigurationManager.AppSettings["ConnectString"]);

}

///<summary>

///查询结果集

///</summary>

///<param name="sql">执行语句</param>

///<returns>返回一个DataTable对象</returns>

public static DataTable ExecuteDataTable(string sql)

{

using(OleDbConnection con= GetDBConnection())

{

OleDbCommand cmd= new OleDbCommand(sql, con);

return ExecuteDataTable(cmd);

}

}

///<summary>

///查询结果集

///</summary>

///<param name="cmd">执行语句的OleDbCommand命令</param>

///<returns>返回一个DataTable对象</returns>

public static DataTable ExecuteDataTable(OleDbCommand cmd)

{

DataSet ds= new DataSet();

using(OleDbDataAdapter da= new OleDbDataAdapter(cmd))

{

try

{

da.Fill(ds);

}

catch(Exception e)

{

throw e;

}

}

if(ds.Tables.Count> 0)

{

ds.Tables[0].DefaultView.RowStateFilter= DataViewRowState.Unchanged| DataViewRowState.Added| DataViewRowState.ModifiedCurrent| DataViewRowState.Deleted;

return ds.Tables[0];

}

else

return null;

}

///<summary>

///执行查询,并返回查询所返回的结果集中第一行的第一列。忽略其他列或行。

///</summary>

///<param name="sql">查询语句</param>

///<returns>返回结果集中第一行的第一列的object值</returns>

public static object ExecuteScalar(string sql)

{

using(OleDbConnection con= GetDBConnection())

{

OleDbCommand cmd= new OleDbCommand(sql, con);

return ExecuteScalar(cmd);

}

}

///<summary>

///执行查询,并返回查询所返回的结果集中第一行的第一列。忽略其他列或行。

///</summary>

///<param name="cmd">查询命令</param>

///<returns>返回结果集中第一行的第一列的object值</returns>

public static object ExecuteScalar(OleDbCommand cmd)

{

try

{

cmd.Connection.Open();

object obj= cmd.ExecuteScalar();

cmd.Connection.Close();

return obj;

}

catch(Exception error)

{

cmd.Connection.Close();

throw error;

}

}

///<summary>

///更新数据集

///</summary>

///<param name="dt">要更新的数据集</param>

///<param name="insertCmd">插入SQL语句</param>

///<param name="updateCmd">更新SQL语句</param>

///<param name="deleteCmd">删除SQL语句</param>

///<returns></returns>

public static int UpdateDataSet(DataTable dt, OleDbCommand insertCmd, OleDbCommand updateCmd, OleDbCommand deleteCmd)

{

using(OleDbDataAdapter da= new OleDbDataAdapter())

{

da.InsertCommand= insertCmd;

da.UpdateCommand= updateCmd;

da.DeleteCommand= deleteCmd;

//da.UpdateBatchSize= 0;//UpdateBatchSize:指定可在一次批处理中执行的命令的数量,在Access不被支持。0:批大小没有限制。1:禁用批量更新。>1:更改是使用 UpdateBatchSize操作的批处理一次性发送的。

da.InsertCommand.UpdatedRowSource= UpdateRowSource.None;

da.UpdateCommand.UpdatedRowSource= UpdateRowSource.None;

da.DeleteCommand.UpdatedRowSource= UpdateRowSource.None;

try

{

int row= da.Update(dt);

return row;

}

catch(Exception e)

{

throw e;

}

}

}

///<summary>

///返回一个查询语句执行结果的表结构

///</summary>

///<param name="sql">查询语句,不支持复杂SQL</param>

///<returns></returns>

public static DataTable GetTableSchema(string sql)

{

sql= sql.ToUpper();

DataTable dt= null;

using(OleDbConnection con= GetDBConnection())

{

OleDbCommand cmd= new OleDbCommand(sql, con);

con.Open();

using(OleDbDataReader dr= cmd.ExecuteReader(CommandBehavior.KeyInfo| CommandBehavior.SchemaOnly| CommandBehavior.CloseConnection))

{

dt= dr.GetSchemaTable();

}

}

return dt;

}

///<summary>

///根据输入的查询语句自动生成插入,更新,删除命令

///</summary>

///<param name="sql">查询语句</param>

///<param name="insertCmd">插入命令</param>

///<param name="updateCmd">更新命令</param>

///<param name="deleteCmd">删除命令</param>

public static void GenerateUpdateSQL(string sql, OleDbCommand insertCmd, OleDbCommand updateCmd, OleDbCommand deleteCmd)

{

sql= sql.ToUpper();

DataTable dt= GetTableSchema(sql);

string tableName= dt.Rows[0]["BaseTableName"].ToString();

List<OleDbParameter> updatePrimarykeys= new List<OleDbParameter>();//主键参数集合

List<OleDbParameter> deletePrimarykeys= new List<OleDbParameter>();//主键参数集合,因为不能同时被OleDbCommand个命令引用,所以多申明一个

List<OleDbParameter> insertFields= new List<OleDbParameter>();//字段参数集合

List<OleDbParameter> updateFields= new List<OleDbParameter>();//字段参数集合

string columns= string.Empty, values="", set="", where="";

foreach(DataRow dr in dt.Rows)

{

if(dr["IsAutoIncrement"].ToString().Equals("False"))

{

insertFields.Add(new OleDbParameter("@"+ dr["BaseColumnName"].ToString(),

(OleDbType)dr["ProviderType"],

Convert.ToInt32(dr["ColumnSize"]),

dr["BaseColumnName"].ToString()));

updateFields.Add(new OleDbParameter("@"+ dr["BaseColumnName"].ToString(),

(OleDbType)dr["ProviderType"],

Convert.ToInt32(dr["ColumnSize"]),

dr["BaseColumnName"].ToString()));

if(!string.IsNullOrEmpty(columns))

columns+=",";

columns+= dr["BaseColumnName"].ToString();

if(!string.IsNullOrEmpty(values))

values+=",";

values+="@"+ dr["BaseColumnName"].ToString();

if(!string.IsNullOrEmpty(set))

set+=",";

set+= dr["BaseColumnName"].ToString()+"=@"+ dr["BaseColumnName"].ToString();

}

if(dr["IsKey"].ToString().Equals("True"))

{

updatePrimarykeys.Add(new OleDbParameter("@OLD_"+ dr["BaseColumnName"].ToString(),

(OleDbType)dr["ProviderType"],

Convert.ToInt32(dr["ColumnSize"]),

ParameterDirection.Input,

Convert.ToBoolean(dr["AllowDBNull"]),

Convert.ToByte(dr["NumericScale"]),

Convert.ToByte(dr["NumericPrecision"]),

dr["BaseColumnName"].ToString(), DataRowVersion.Original, null));

deletePrimarykeys.Add(new OleDbParameter("@OLD_"+ dr["BaseColumnName"].ToString(),

(OleDbType)dr["ProviderType"],

Convert.ToInt32(dr["ColumnSize"]),

ParameterDirection.Input,

Convert.ToBoolean(dr["AllowDBNull"]),

Convert.ToByte(dr["NumericScale"]),

Convert.ToByte(dr["NumericPrecision"]),

dr["BaseColumnName"].ToString(), DataRowVersion.Original, null));

if(!string.IsNullOrEmpty(where))

where+=" and";

where+= dr["BaseColumnName"].ToString()+"=@OLD_"+ dr["BaseColumnName"].ToString();

}

}

insertCmd.CommandText= string.Format("insert into{0}({1}) values({2})", tableName, columns, values);

updateCmd.CommandText= string.Format("update{0} set{1} where{2}", tableName, set, where);

deleteCmd.CommandText= string.Format("delete from{0} where{1}", tableName, where);

insertCmd.Connection= GetDBConnection();

updateCmd.Connection= GetDBConnection();

deleteCmd.Connection= GetDBConnection();

foreach(OleDbParameter pa in insertFields)

{

insertCmd.Parameters.Add(pa);

}

foreach(OleDbParameter pa in updateFields)

{

updateCmd.Parameters.Add(pa);

}

foreach(OleDbParameter pa in updatePrimarykeys)

{

updateCmd.Parameters.Add(pa);

}

foreach(OleDbParameter pa in deletePrimarykeys)

{

deleteCmd.Parameters.Add(pa);

}

}

}

}

好了,文章到这里就结束啦,如果本次分享的oledbcommand和OleDbCommandBuilder对数据库的操作问题对您有所帮助,还望关注下本站哦!

品牌网站建设,品牌网站建设有哪些重点godaddy 优惠码 怎么获取Godaddy的优惠码啊