我自己做了个小网站,每次类实例化后得到ACCESS连接变量OleDbConnection,感觉这样实例化没有使用静态变量效率高,我试了把连接变量改成了静态,但问题来了,经常报错,说连接出错。想请教各位大侠,有没有更好的方法?可以使用静态变量吗? 谢谢!
解决方案 »
- .net程序中 “/”应用程序中的服务器错误。怎么解决???
- 关于处理json
- 求救!
- 哪个图形控件更适合做长曲线?
- 求助:设定了table的<td>宽度,但是还是不能让它换行,为什么?
- asp.net this.button.Attributes.Add("onclick","return confirm();");
- 关于.net和DIV兼容问题的解决,大家看看
- 请教两个用户控件的引用区别
- ASP.NET 的datalist里面 我放了个Lable1 想在后台CS 页面 给他赋值
- 怎样用DirectoryInfo过滤我想要得文件格式,例如*.jpg *.gif?
- linkButtn 的onclientClick的绑定参数的老问题
- CSDN现在为什么这么慢呢,网速确很好
//////////////////////////////////////////////////////////////
//filename: SqlHelper.cs
//
//author:
//
//date: 2007.10.31
//
//description: 数据持久层
////////////////////////////////////////////////////////////////using System;
using System.Collections;
using System.Data;
using System.Data.SqlClient;
using System.Data.OleDb;/// <summary>
/// OleDbHelper 的摘要说明。
/// </summary>
public class DBHelper
{
public static readonly string oleconstring = System.Configuration.ConfigurationSettings.AppSettings["oleconstring"];
public DBHelper()
{ }
/// <summary>
/// OleDb数据库增、删、改方法
/// </summary>
/// <param name="sql">执行数据库操作语句</param>
/// <param name="param">参数数组</param>
/// <returns>返回int类型,返回0则操作失败,返回数大于0则操作成功</returns>
public static int ExecuteNonquery(string sql, params OleDbParameter[] param)
{
int bFlag = 0;
OleDbCommand cmd = new OleDbCommand();
using (OleDbConnection con = new OleDbConnection(oleconstring))
{
cmd.Connection = con;
cmd.CommandText = sql; if (param.Length > 0)
{
foreach (OleDbParameter p in param)
{
cmd.Parameters.Add(p);
}
} try
{
if (con.State == ConnectionState.Closed)
con.Open();
bFlag = cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
string msg = ex.Message;
}
finally
{
con.Close();
}
}
return bFlag;
} /// <summary>
/// OleDb数据库查询方法
/// </summary>
/// <param name="sql">执行数据库操作语句</param>
/// <param name="param">参数数组</param>
/// <returns>返回DataTable类型</returns>
public static DataTable ExecuteDataTable(string sql, params OleDbParameter[] param)
{
DataTable dt = new DataTable();
OleDbDataAdapter da = new OleDbDataAdapter();
OleDbCommand cmd = new OleDbCommand();
da.SelectCommand = cmd;
using (OleDbConnection con = new OleDbConnection(oleconstring))
{
cmd.Connection = con;
cmd.CommandText = sql; if (param.Length > 0)
{
foreach (OleDbParameter p in param)
{
cmd.Parameters.Add(p);
}
}
try
{
da.Fill(dt);
}
catch (Exception ex)
{
string msg = ex.Message;
}
finally
{ }
}
return dt;
} /// <summary>
/// OleDb数据库查询方法
/// </summary>
/// <param name="sql">执行数据库操作语句</param>
/// <param name="param">参数数组</param>
/// <returns>返回ArrayList类型</returns>
public static ArrayList ExecuteArrayList(string sql, params OleDbParameter[] param)
{
OleDbDataReader reader = null;
ArrayList al = new ArrayList();
OleDbCommand cmd = new OleDbCommand();
using (OleDbConnection con = new OleDbConnection(oleconstring))
{
cmd.Connection = con;
cmd.CommandText = sql; if (param.Length > 0)
{
foreach (OleDbParameter p in param)
{
cmd.Parameters.Add(p);
}
}
try
{
if (con.State == ConnectionState.Closed)
con.Open();
reader = cmd.ExecuteReader();
while (reader.Read())
{
al.Add(reader[0]);
}
//while (reader.Read())
//{
// //for (int i = 1; i < reader.FieldCount; i++)
// //{
// // al.Add(reader[i]);
// //}
// foreach (Object obj in reader)
// {
// al.Add(obj);
// }
//}
}
catch (Exception ex)
{
string msg = ex.Message;
}
finally
{ }
}
return al;
} /// <summary>
/// OleDb数据库验证方法
/// </summary>
/// <param name="sql">执行数据库操作语句</param>
/// <param name="param">参数数组</param>
/// <returns>返回bool类型</returns>
public static bool Exists(string sql, params OleDbParameter[] param)
{
OleDbDataReader reader = null;
bool flag = false;
OleDbCommand cmd = new OleDbCommand();
using (OleDbConnection con = new OleDbConnection(oleconstring))
{
cmd.Connection = con;
cmd.CommandText = sql; if (param.Length > 0)
{
foreach (OleDbParameter p in param)
{
cmd.Parameters.Add(p);
}
}
try
{
if (con.State == ConnectionState.Closed)
con.Open();
reader = cmd.ExecuteReader();
if (reader.Read())
{
flag = true;
}
}
catch (Exception ex)
{
flag = false;
string msg = ex.Message;
}
finally
{ }
}
return flag;
}
}我的ACCESS数据库访问类……LZ参考下吧……
# using System;
# using System.Collections.Generic;
# using System.Text;
# using System.Data;
# using System.Data.OleDb;
# using System.Data.SqlClient;
#
# namespace TestAccess
# {
# class Program
# {
# static void Main(string[] args)
# {
# #region Access 2007
# Console.WriteLine("Access 2007");
# string strConnection = "Provider=Microsoft.ACE.OLEDB.12.0;";
# strConnection += @"Data Source=C:\Documents and Settings\v-changl\My Documents\Database1.accdb;";
# strConnection += "Persist Security Info=False";
# using (OleDbConnection objConnection = new OleDbConnection(strConnection))
# {
# objConnection.Open();
# OleDbDataAdapter myCommandd = new OleDbDataAdapter("select * from Couse", objConnection);
# DataSet ds = new DataSet();
# myCommandd.Fill(ds, "couse");
# DataTable dt = ds.Tables["couse"];
# Console.WriteLine(dt.Columns[0].ToString());
# Console.WriteLine(dt.Columns[1].ToString());
# Console.WriteLine(dt.Columns[2].ToString());
#
# objConnection.Close();
#
# }
# #endregion
# }
# }
# }
静态遍历常驻内存
protected static OleDbConnection conn = new OleDbConnection();
protected static OleDbCommand comm = new OleDbCommand();
public DataAccess()
{
}
private static void openConnection()
{
if (conn.State == ConnectionState.Closed)
{
string path = System.Web.HttpContext.Current.Server.MapPath("");
conn.ConnectionString = @"Provider=Microsoft.Jet.OleDb.4.0;Data Source=" + path;
comm.Connection = conn;
try
{
conn.Open();
}
catch (Exception e)
{ throw new Exception(e.Message); }
}
}
参考
参考