ASP.NET调用类连接Access数据库执行sql语句并以GridView方式读取表中数据
2009-11-19 09:15
585 查看
上篇文章是通过页面直接访问数据库,这篇是通过调用一个通用的AccessDb类来实现对数据的操作,这样可以节省以后的工作量,创建的类需要放在App_Code文件夹下(创建类时vs2005会提示)
新建类AccessDB
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.OleDb;
/// <summary>
/// AccessDB 的摘要说明
/// </summary>
public class AccessDB
{
//变量声明处#region 变量声明处
public OleDbConnection Conn;
public string ConnString;//连接字符串
public AccessDB()
{
//ConnString = ConfigurationManager.ConnectionStrings["DB"].ConnectionString + System.AppDomain.CurrentDomain.BaseDirectory + ConfigurationManager.ConnectionStrings["DBpath"].ConnectionString;
string datapath = "DataBase/SampleDatabase.mdb";
string strConnection = "Provider=Microsoft.Jet.OleDb.4.0;Data Source= ";
strConnection += System.Web.HttpContext.Current.Server.MapPath(datapath);
ConnString = strConnection;
Conn = new OleDbConnection(ConnString);
Conn.Open();
}
//构造函数与连接关闭数据库#region 构造函数与连接关闭数据库
/// <summary>
/// 构造函数
/// </summary>
/// <param name="Dbpath">ACCESS数据库路径-webconfig中自定义</param>
public AccessDB(string DBpath)
{
//ConnString = ConfigurationManager.ConnectionStrings["DB"].ConnectionString + System.AppDomain.CurrentDomain.BaseDirectory + ConfigurationManager.ConnectionStrings["DBpath"].ConnectionString;
string datapath = "DataBase/SampleDatabase.mdb";
string strConnection = "Provider=Microsoft.Jet.OleDb.4.0;Data Source= ";
strConnection += System.Web.HttpContext.Current.Server.MapPath(datapath);
Conn = new OleDbConnection(strConnection);
Conn.Open();
}
/// <summary>
/// 打开数据源链接
/// </summary>
/// <returns></returns>
public OleDbConnection DbConn()
{
Conn.Open();
return Conn;
}
/// <summary>
/// 请在数据传递完毕后调用该函数,关闭数据链接。
/// </summary>
public void Close()
{
Conn.Close();
}
/// 数据库基本操作#region 数据库基本操作
/// <summary>
/// 根据SQL命令返回数据DataTable数据表,
/// 可直接作为dataGridView的数据源
/// </summary>
/// <param name="SQL"></param>
/// <returns></returns>
public DataTable SelectToDataTable(string SQL)
{
OleDbDataAdapter adapter = new OleDbDataAdapter();
OleDbCommand command = new OleDbCommand(SQL, Conn);
adapter.SelectCommand = command;
DataTable Dt = new DataTable();
adapter.Fill(Dt);
return Dt;
}
/// <summary>
/// 根据SQL命令返回数据DataSet数据集,其中的表可直接作为dataGridView的数据源。
/// </summary>
/// <param name="SQL"></param>
/// <param name="subtableName">在返回的数据集中所添加的表的名称</param>
/// <returns></returns>
public DataSet SelectToDataSet(string SQL, string subtableName)
{
OleDbDataAdapter adapter = new OleDbDataAdapter();
OleDbCommand command = new OleDbCommand(SQL, Conn);
adapter.SelectCommand = command;
DataSet Ds = new DataSet();
Ds.Tables.Add(subtableName);
adapter.Fill(Ds, subtableName);
return Ds;
}
/// <summary>
/// 在指定的数据集中添加带有指定名称的表,由于存在覆盖已有名称表的危险,返回操作之前的数据集。
/// </summary>
/// <param name="SQL"></param>
/// <param name="subtableName">添加的表名</param>
/// <param name="DataSetName">被添加的数据集名</param>
/// <returns></returns>
public DataSet SelectToDataSet(string SQL, string subtableName, DataSet DataSetName)
{
OleDbDataAdapter adapter = new OleDbDataAdapter();
OleDbCommand command = new OleDbCommand(SQL, Conn);
adapter.SelectCommand = command;
DataTable Dt = new DataTable();
DataSet Ds = new DataSet();
Ds = DataSetName;
adapter.Fill(DataSetName, subtableName);
return Ds;
}
/// <summary>
/// 根据SQL命令返回OleDbDataAdapter,
/// 使用前请在主程序中添加命名空间System.Data.OleDb
/// </summary>
/// <param name="SQL"></param>
/// <returns></returns>
public OleDbDataAdapter SelectToOleDbDataAdapter(string SQL)
{
OleDbDataAdapter adapter = new OleDbDataAdapter();
OleDbCommand command = new OleDbCommand(SQL, Conn);
adapter.SelectCommand = command;
return adapter;
}
/// <summary>
/// 执行SQL命令,不需要返回数据的修改,删除可以使用本函数
/// </summary>
/// <param name="SQL"></param>
/// <returns></returns>
public bool ExecuteSQLNonquery(string SQL)
{
OleDbCommand cmd = new OleDbCommand(SQL, Conn);
try
{
cmd.ExecuteNonQuery();
return true;
}
catch
{
return false;
}
}
/// <summary>
/// 执行SQL命令,数据是否存在,返回bool
/// </summary>
/// <param name="SQL"></param>
/// <returns></returns>
public bool Exists(string SQL)
{
OleDbCommand cmd = new OleDbCommand(SQL, Conn);
int count = Convert.ToInt32(cmd.ExecuteScalar());
if (count > 0)
{
return true;
}
else
{
return false;<
4000
br /> }
}
/// <summary>
/// 执行SQL命令,查询记录总数,返回int
/// </summary>
/// <param name="SQL"></param>
/// <returns></returns>
public int MaxCount(string SQL)
{
OleDbCommand cmd = new OleDbCommand(SQL, Conn);
int count = Convert.ToInt32(cmd.ExecuteScalar());
if (count > 0)
{
return count;
}
else
{
return 0;
}
}
}
这是摘自网上一个朋友写的类,做了一些修改
在写一个页面AccessData,源码如下:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="AccessData.aspx.cs" Inherits="AccessData" %>
<%@Import Namespace="System.Data"%>
<%@Import Namespace="System.Data.SqlClient"%>
<%@Import Namespace="System.Data.OleDb"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
DataSet accessdata = new DataSet();
//调用类连接数据库
AccessDB accessdb = new AccessDB();
//执行语句
string insertsql = "insert into zbinfo values (1,1,1,1)";
accessdb.ExecuteSQLNonquery(insertsql);
//GridView方式读取数据
string str = "select * from zbinfo";
accessdb.SelectToDataSet(str, "zbinfo", accessdata);
this.GridView1.DataSource = accessdata.Tables["zbinfo"].DefaultView;
this.GridView1.DataBind();
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>监控对象位置</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="Label1" runat="server" Text="监控对象:"></asp:Label>
<asp:Label ID="zbid" runat="server" Text="Label"></asp:Label>
<br />
<br />
<br />
<asp:Label ID="Label3" runat="server" Text="坐标信息:"></asp:Label>
<asp:Label ID="zbinfo" runat="server" Text="Label"></asp:Label>
<asp:Label ID="Label_count" runat="server" Text="Label"></asp:Label><br />
<br />
<br />
<asp:GridView ID="GridView1" runat="server">
</asp:GridView>
<br />
<br />
<asp:DataList ID="DataList1" runat="server">
</asp:DataList><br />
<asp:TextBox ID="TextBox1" runat="server" Height="46px" Width="316px"></asp:TextBox></div>
</form>
</body>
</html>
新建类AccessDB
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.OleDb;
/// <summary>
/// AccessDB 的摘要说明
/// </summary>
public class AccessDB
{
//变量声明处#region 变量声明处
public OleDbConnection Conn;
public string ConnString;//连接字符串
public AccessDB()
{
//ConnString = ConfigurationManager.ConnectionStrings["DB"].ConnectionString + System.AppDomain.CurrentDomain.BaseDirectory + ConfigurationManager.ConnectionStrings["DBpath"].ConnectionString;
string datapath = "DataBase/SampleDatabase.mdb";
string strConnection = "Provider=Microsoft.Jet.OleDb.4.0;Data Source= ";
strConnection += System.Web.HttpContext.Current.Server.MapPath(datapath);
ConnString = strConnection;
Conn = new OleDbConnection(ConnString);
Conn.Open();
}
//构造函数与连接关闭数据库#region 构造函数与连接关闭数据库
/// <summary>
/// 构造函数
/// </summary>
/// <param name="Dbpath">ACCESS数据库路径-webconfig中自定义</param>
public AccessDB(string DBpath)
{
//ConnString = ConfigurationManager.ConnectionStrings["DB"].ConnectionString + System.AppDomain.CurrentDomain.BaseDirectory + ConfigurationManager.ConnectionStrings["DBpath"].ConnectionString;
string datapath = "DataBase/SampleDatabase.mdb";
string strConnection = "Provider=Microsoft.Jet.OleDb.4.0;Data Source= ";
strConnection += System.Web.HttpContext.Current.Server.MapPath(datapath);
Conn = new OleDbConnection(strConnection);
Conn.Open();
}
/// <summary>
/// 打开数据源链接
/// </summary>
/// <returns></returns>
public OleDbConnection DbConn()
{
Conn.Open();
return Conn;
}
/// <summary>
/// 请在数据传递完毕后调用该函数,关闭数据链接。
/// </summary>
public void Close()
{
Conn.Close();
}
/// 数据库基本操作#region 数据库基本操作
/// <summary>
/// 根据SQL命令返回数据DataTable数据表,
/// 可直接作为dataGridView的数据源
/// </summary>
/// <param name="SQL"></param>
/// <returns></returns>
public DataTable SelectToDataTable(string SQL)
{
OleDbDataAdapter adapter = new OleDbDataAdapter();
OleDbCommand command = new OleDbCommand(SQL, Conn);
adapter.SelectCommand = command;
DataTable Dt = new DataTable();
adapter.Fill(Dt);
return Dt;
}
/// <summary>
/// 根据SQL命令返回数据DataSet数据集,其中的表可直接作为dataGridView的数据源。
/// </summary>
/// <param name="SQL"></param>
/// <param name="subtableName">在返回的数据集中所添加的表的名称</param>
/// <returns></returns>
public DataSet SelectToDataSet(string SQL, string subtableName)
{
OleDbDataAdapter adapter = new OleDbDataAdapter();
OleDbCommand command = new OleDbCommand(SQL, Conn);
adapter.SelectCommand = command;
DataSet Ds = new DataSet();
Ds.Tables.Add(subtableName);
adapter.Fill(Ds, subtableName);
return Ds;
}
/// <summary>
/// 在指定的数据集中添加带有指定名称的表,由于存在覆盖已有名称表的危险,返回操作之前的数据集。
/// </summary>
/// <param name="SQL"></param>
/// <param name="subtableName">添加的表名</param>
/// <param name="DataSetName">被添加的数据集名</param>
/// <returns></returns>
public DataSet SelectToDataSet(string SQL, string subtableName, DataSet DataSetName)
{
OleDbDataAdapter adapter = new OleDbDataAdapter();
OleDbCommand command = new OleDbCommand(SQL, Conn);
adapter.SelectCommand = command;
DataTable Dt = new DataTable();
DataSet Ds = new DataSet();
Ds = DataSetName;
adapter.Fill(DataSetName, subtableName);
return Ds;
}
/// <summary>
/// 根据SQL命令返回OleDbDataAdapter,
/// 使用前请在主程序中添加命名空间System.Data.OleDb
/// </summary>
/// <param name="SQL"></param>
/// <returns></returns>
public OleDbDataAdapter SelectToOleDbDataAdapter(string SQL)
{
OleDbDataAdapter adapter = new OleDbDataAdapter();
OleDbCommand command = new OleDbCommand(SQL, Conn);
adapter.SelectCommand = command;
return adapter;
}
/// <summary>
/// 执行SQL命令,不需要返回数据的修改,删除可以使用本函数
/// </summary>
/// <param name="SQL"></param>
/// <returns></returns>
public bool ExecuteSQLNonquery(string SQL)
{
OleDbCommand cmd = new OleDbCommand(SQL, Conn);
try
{
cmd.ExecuteNonQuery();
return true;
}
catch
{
return false;
}
}
/// <summary>
/// 执行SQL命令,数据是否存在,返回bool
/// </summary>
/// <param name="SQL"></param>
/// <returns></returns>
public bool Exists(string SQL)
{
OleDbCommand cmd = new OleDbCommand(SQL, Conn);
int count = Convert.ToInt32(cmd.ExecuteScalar());
if (count > 0)
{
return true;
}
else
{
return false;<
4000
br /> }
}
/// <summary>
/// 执行SQL命令,查询记录总数,返回int
/// </summary>
/// <param name="SQL"></param>
/// <returns></returns>
public int MaxCount(string SQL)
{
OleDbCommand cmd = new OleDbCommand(SQL, Conn);
int count = Convert.ToInt32(cmd.ExecuteScalar());
if (count > 0)
{
return count;
}
else
{
return 0;
}
}
}
这是摘自网上一个朋友写的类,做了一些修改
在写一个页面AccessData,源码如下:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="AccessData.aspx.cs" Inherits="AccessData" %>
<%@Import Namespace="System.Data"%>
<%@Import Namespace="System.Data.SqlClient"%>
<%@Import Namespace="System.Data.OleDb"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
DataSet accessdata = new DataSet();
//调用类连接数据库
AccessDB accessdb = new AccessDB();
//执行语句
string insertsql = "insert into zbinfo values (1,1,1,1)";
accessdb.ExecuteSQLNonquery(insertsql);
//GridView方式读取数据
string str = "select * from zbinfo";
accessdb.SelectToDataSet(str, "zbinfo", accessdata);
this.GridView1.DataSource = accessdata.Tables["zbinfo"].DefaultView;
this.GridView1.DataBind();
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>监控对象位置</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="Label1" runat="server" Text="监控对象:"></asp:Label>
<asp:Label ID="zbid" runat="server" Text="Label"></asp:Label>
<br />
<br />
<br />
<asp:Label ID="Label3" runat="server" Text="坐标信息:"></asp:Label>
<asp:Label ID="zbinfo" runat="server" Text="Label"></asp:Label>
<asp:Label ID="Label_count" runat="server" Text="Label"></asp:Label><br />
<br />
<br />
<asp:GridView ID="GridView1" runat="server">
</asp:GridView>
<br />
<br />
<asp:DataList ID="DataList1" runat="server">
</asp:DataList><br />
<asp:TextBox ID="TextBox1" runat="server" Height="46px" Width="316px"></asp:TextBox></div>
</form>
</body>
</html>
相关文章推荐
- Asp.Net访问Oracle 数据库执行SQL语句和调用存储过程
- [学习笔记][asp.net下SQL语句无法向ACCESS数据库插入数据的小提示
- Asp.Net访问Oracle 数据库 执行SQL语句和调用存储过程
- Asp.Net访问Oracle 数据库 执行SQL语句和调用存储过程
- Asp.Net访问Oracle 数据库 执行SQL语句和调用存储过程
- Asp.Net访问Oracle 数据库 执行SQL语句和调用存储过程
- 数据库操作_连接SQL Server数据库示例;连接ACCESS数据库;连接到 Oracle 数据库示例;SqlCommand 执行SQL命令示例;SqlDataReader 读取数据示例;使用DataAdapter填充数据到DataSet;使用DataTable存储数据库表;将数据库数据填充到 XML 文件;10 使用带输入参数的存储过程;11 使用带输入、输出参数的存储过程示;12 获得数据库中表的数目和名称;13 保存图片到SQL Server数据库示例;14 获得插入记录标识号;Exce
- asp.net连接MYSQL的SQL语句中有汉字问题最简单、最终的解决方法
- asp.net 用sqldatareader读取数据
- C#(.net)中的一次连接数据库执行多条sql语句(两种方法)
- ASP创建并打开ACCESS数据库连接并读取内容语句段
- ASP.NET中Gridview读取数据表列表页面常用操作-序号,编辑,删除,删除确认
- Access数据库操作,连接数据库、执行SQL语句等
- 使用字符串连接的方式来执行Sql语句
- Qt开发,链接了数据库后,调用QSqlQuery::setQuery执行SQL语句获取我们想要的数据
- asp.net连接数据库读取数据示例分享
- Asp.Net连接ACCESS数据库相对路径问题,web.config中如何使用相对路径及在类文件中调用这个相对路径
- 使用JDBC连接数据库并且调用存储过程和执行SQL语句
- ASP.NET中Gridview读取数据表列表页面常用操作-序号,编辑,删除,删除确认