求助

elber 2003-11-02 10:16:40
请问用c#连接数据库的高招,简洁,高效??小弟不胜感激
...全文
63 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
wwonion 2003-11-03
  • 打赏
  • 举报
回复
给你一个类

using System;
using System.Data;
using System.Data.OleDb;
namespace Access
{
/// <summary>
/// Class1 的摘要说明。
/// </summary>
public class AccessDB
{ static string ConnStr;
public AccessDB(string connStr)
{
if (connStr!=null){

ConnStr=connStr;
}
}
public void Exec(string Sql_str) {
using(OleDbConnection Conn = new OleDbConnection(ConnStr)) {
//没有返回的SQL执行
Conn.Open();
OleDbCommand My_cmd = new OleDbCommand(Sql_str, Conn);
My_cmd.ExecuteNonQuery();
Conn.Close();
Conn.Dispose();
}
}
public DataTable Exec_dt(string Sql_str) {

using(OleDbConnection Conn = new OleDbConnection(ConnStr)) {
//返回一个数据表格dt
DataSet ds = new DataSet();
OleDbDataAdapter dap = new OleDbDataAdapter(Sql_str,Conn);
dap.Fill(ds);
dap.Dispose();
Conn.Close();
Conn.Dispose();
return ds.Tables[0];
}

}

public OleDbDataReader Exec_dr(string Sql_str){

OleDbConnection Conn = new OleDbConnection(ConnStr);
//返回一个DR记录集
Conn.Open();
OleDbCommand My_cmd = new OleDbCommand(Sql_str, Conn);
return My_cmd.ExecuteReader(CommandBehavior.CloseConnection);

}

public bool Into(string Table_name,string Ziduan,string[] Vluer) {
//参数说明
//参数1表名
//参数2字段
//参数3值串
try{
using(OleDbConnection Conn = new OleDbConnection(ConnStr)) {
//用参数自动插入数据
OleDbCommand My_cmd = new OleDbCommand();
string Vale_zi="";
for (int i = 0; i < Vluer.Length ; i++) {

if (i == Vluer.Length-1){
Vale_zi +="@v"+i.ToString();
}else {
Vale_zi +="@v"+i.ToString()+",";
}

My_cmd.Parameters.Add(new OleDbParameter("@v"+i.ToString(), OleDbType.VarChar,Vluer[i].ToString().Length));
My_cmd.Parameters["@v"+i.ToString()].Value=Vluer[i].ToString();

}
string Sql_str = "insert into "+Table_name+"("+ Ziduan +")values("+ Vale_zi +")";

//Response.Write(Sql_str);
// Response.End();
Conn.Open();
My_cmd.Connection=Conn;
My_cmd.CommandText=Sql_str;
My_cmd.ExecuteNonQuery();
Conn.Close();
Conn.Dispose();
}
return true;
}
catch{
return false;
}
}

public bool UPdate(string TableName,string[] ZiDuan,string[] Vluer,string Whe){
//
try{
using(OleDbConnection Conn = new OleDbConnection(ConnStr)) {
OleDbCommand My_cmd = new OleDbCommand();
string Temp_sql="";
for (int i=0; i<ZiDuan.Length;i++){
if (i==ZiDuan.Length-1){
Temp_sql += ZiDuan[i].ToString()+"=@"+ZiDuan[i].ToString();
}else{
Temp_sql += ZiDuan[i].ToString()+"=@"+ZiDuan[i].ToString()+",";
}
My_cmd.Parameters.Add(new OleDbParameter("@"+ZiDuan[i].ToString(), OleDbType.VarChar,Vluer[i].ToString().Length));
My_cmd.Parameters["@"+ZiDuan[i].ToString()].Value=Vluer[i].ToString();
}
string Sql_str = "UPDATE "+TableName+" SET "+Temp_sql+" WHERE "+Whe;
Conn.Open();
My_cmd.Connection=Conn;
My_cmd.CommandText=Sql_str;
My_cmd.ExecuteNonQuery();
Conn.Close();
Conn.Dispose();
}

return true;
}

catch {

return false;
}


}
public string Vluer(string Sql){
string temp_str=null;
using(OleDbConnection Conn = new OleDbConnection(ConnStr)) {
//返回一个DR记录集
Conn.Open();
OleDbCommand My_cmd = new OleDbCommand(Sql, Conn);
OleDbDataReader dr = My_cmd.ExecuteReader();
if (dr.Read()){
temp_str=dr["Vluer"].ToString();
}
dr.Close();
Conn.Close();
Conn.Dispose();

return temp_str;
}

}


~ AccessDB(){
GC.Collect();
}
}

}


//---------

示例
using System.Data.OleDb;
using Access;

AccessDB DBO = new AccessDB("数据连接字符串");
DBO.Exec("SQL语句");//没有返回的数据操作,
DataTable DT = DBO.Exec_dt("sql语句");//返回 DataTable
OleDbDataReader dr = DBO.Exec_dr("sql语句")//返回OleDbDataReader

...
其他自己试!

LesleyChiu 2003-11-02
  • 打赏
  • 举报
回复
如果是读取数据行集,就用sqldataadapter,
如果是写,删,修改数据库,就用sqlcommand.executenoquery
如果是存储过程,sqlserver的如上,
oracle的只有用oraclecommand, parameter了。
kinber 2003-11-02
  • 打赏
  • 举报
回复
简洁?
用command ,connection ,d……
用command连接Sql 语句,使用command比较全面,学会它就可以不用学其他了。
connection 只是个连接方式了
哎,麻烦

你用Visual Studio 中,用鼠标点击下,也就完成了:)
Reeezak 2003-11-02
  • 打赏
  • 举报
回复
最简单的方法就是用vs自带的那个数据库连接向导

111,119

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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