C#连接数据库编程
1、Access数据库一般后缀名是.mdb文件,使用C#读取比较方便,在读取之前先得添加额外的命名空间,如下所示:
using System.Data.OleDb;
2、下面是连接Access数据库的代码片段,如下所示:
////定义容器数组
List<string> UserName = new List<string>();
List<string> Pwd = new List<string>();
List<string> Pwd_View = new List<string>();
List<string> Email = new List<string>();
//连接Access数据库
string strConnection = "Provider=Microsoft.Jet.OleDb.4.0;";
strConnection += @"Data Source=C:\qq.mdb";
OleDbConnection objConnection = new OleDbConnection(strConnection);
//打开数据库
objConnection.Open();
//查询数据库
OleDbCommand sqlcmd = new OleDbCommand(@"select * from CFCount_User", objConnection);
//执行查询语句
OleDbDataReader reader = sqlcmd.ExecuteReader();
//HasRows属性显示OleDbDataReader是否包含数据
if (reader.HasRows)
{
string strline;
//读取下一条记录并将内容存储在容器数组内
while (reader.Read())
{
//添加文件ID号
strline = reader["UserName"].ToString();
MessageBox.Show(strline);
UserName.Add(strline);
//添加文件标题
strline = reader["Pwd"].ToString();
Pwd.Add(strline);
//添加文件下载地址
strline = reader["Pwd_View"].ToString();
Pwd_View.Add(strline);
//添加文件名
strline = reader["Email"].ToString();
Email.Add(strline);
}
}
//关闭读数据库
reader.Close();
//关闭数据库连接
objConnection.Close();
3、说明:
上述代码中的strConnection这个变量里存放的是连接数据库所需要的连接
字符串,它指定了要使用的数据提供者和要使用的数据源。
"Provider=Microsoft.Jet.OleDb.4.0;"是指数据提供者,这里使用的是Microsoft
Jet引擎,也就是Access中的数据引擎,asp.net就是靠这个和Access的数据库连接的。
"Data Source=C:\qq.mdb"是指明数据源的位置,它的标准形式是"Data Source
=MyDrive:MyPath\MyFile.MDB"。
"="后面的"@"符号是防止将后面字符串中的"\"解析为转义字符。
如果要连接的数据库文件和当前文件在同一个目录下,还可以使用如下的方
法连接:
strConnection ="Data Source=";
strConnection +=MapPath("qq.mdb");
要注意连接字符串中的参数之间要用分号来分隔。
"OleDbConnection objConnection=new OleDbConnection(strConnection);"这一
句是利用定义好的连接字符串来建立了一个链接对象,以后对数据库的操作都要和这个对象打交道。
"objConnection.Open();"这用来打开数据库连接。
1、使用C#连接SQL Server数据库时,需要添加额外命名空间,如下所示:
using System.IO;
using System.Data.SqlClient;
2、下面是连接SQL Server数据库的示例代码,如下所示:
//连接数据库
SqlConnection conn = new SqlConnection("Data Source=localhost; Integrated Security=SSPI; Initial Catalog=pubs; DataBase=数据库名");
//打开数据库
conn.Open();
//判断数据库是否已经打开
//if (conn.State == ConnectionState.Open)
//{
// MessageBox.Show("Open SQL DataBase Success!!!");
//}
//设置总共的记录数
int totalcount = 0;
//查询语句的定义
string Dcmd = "select * from dbo.cdsgus";
//设置DtataTable存储
DataTable dt_one;
//查询语句
dt_one = SelectData(Dcmd);
//查看一共有多少条记录
for (int i = 0; i < dt_one.Rows.Count; i++)
totalcount = totalcount + 1;
//判断记录的个数
if (totalcount > 0)
{
//显示前1000条信息
DataTable ds;
if (totalcount < 1000)
ds = DtSelectColumn(0, totalcount, dt_one);
else
ds = DtSelectColumn(0, PageNum, dt_one);
//往listview中写数据
Write_listview(ds);
}
else
MessageBox.Show("没有符合条件的选项!!!");
//释放数据库
conn.Close();
conn.Dispose();
在上面代码中使用到的三个子函数分别是SelectData函数、DtSelectColumn函数和Write_listview函数,下面是这三个子函数的代码,如下所示:
//SelectData函数数据采集
public DataTable SelectData(string Dcmd)
{
//创建SqlCommand
SqlCommand myCommand = new SqlCommand(Dcmd, conn);
//设置连接的时间
myCommand.CommandTimeout = 80000;
//创建SqlDataAdapter
SqlDataAdapter myDataAdapter = new SqlDataAdapter();
//为SqlDataAdapter对象绑定所要执行的SqlCommand对象
myDataAdapter.SelectCommand = myCommand;
//创建DataTable
DataTable myDataTable = new DataTable();
//填充表
myDataAdapter.Fill(myDataTable);
myDataAdapter.Dispose();
return myDataTable;
}
//DtSelectColumn函数查询DataTable里的某一段的数据
public static DataTable DtSelectColumn(int TopItem, int LastItem, DataTable oDT)
{
if (oDT.Rows.Count < LastItem)
return oDT;
DataTable NewTable = oDT.Clone();
DataRow[] rows = oDT.Select("1=1");
for (int i = TopItem; i < LastItem; i++)
{
NewTable.ImportRow((DataRow)rows[i]);
}
return NewTable;
}
// Write_listview函数用于完成向listview添加信息
private void Write_listview(DataTable dt)
{
ListViewItem li = null;
for (int i = 0; i < dt.Rows.Count; i++)
{
li = new ListViewItem(dt.Rows[i]["ID"].ToString());
li.SubItems.Add(dt.Rows[i]["Name"].ToString());
li.SubItems.Add(dt.Rows[i]["Gender"].ToString());
ListView.Items.Add(li);
}
}
说明:
上述代码中对SQL Server数据库的链接字符串设置是针对本地数据库的,若是远程数据库的链接字符串设置,使用下面的语句,如下所示:
string strConnection +="user id=sa;password=123456;";
strConnection +="DataBase=数据库名; Data Source=数据库服务器地址;";
strConnection +="Connect Timeout=30";
连接SQL Server数据库的机制与连接Access的机制没有什么太大的区别,只是改变了Connection对象和连接字符串中的不同参数。
1、使用C#连接Oracle数据库需要添加额外的命名空间,如下所示:
using System.Data.OracleClient;
下面是连接Oracle数据库的示例代码,如下所示:
//写连接串
string ConnectionString="Data Source=sky;user=system;password=manager;";
//创建一个新连接
OracleConnection conn=new OracleConnection(ConnectionString);
try
{
conn.Open();
OracleCommand cmd=conn.CreateCommand();
//在这儿写sql语句
cmd.CommandText="select * from MyTable";
//创建一个OracleDateReader对象
OracleDataReader odr=cmd.ExecuteReader();
//读取数据,如果odr.Read()返回为false的话,就说明到记录集的尾部了
while(odr.Read())
{
//输出字段1,这个数是字段索引,具体怎么使用字段名还有待研究
Response.Write(odr.GetOracleString(1).ToString());
}
odr.Close();
}
catch(Exception ee)
{
Response.Write(ee.Message); //如果有错误,输出错误信息
}
finally
{
conn.Close(); //关闭连接
}
1、对于MySQL数据库的连接,需要额外的添加引用MySql.Data.dll文件,引用的方式就是在右键点击项目,选择”添加引用”,如下所示:
2、点击”浏览”项,如下所示:
3、选择”MySql.Data.dll”,外部dll引用完毕,在程序代码中添加下面的两条命名空间,即:
using MySql.Data;
using MySql.Data.MySqlClient;
下面是连接MySQL数据库的代码,如下所示:
//连接MySQL数据库
string constr = "server=localhost;User Id=root;password=123456;CharSet=gb2312;Database=csdn";
//下面使用MySql Connector/net提供的专用对象
MySqlConnection mycon = new MySqlConnection(constr);
//打开数据库
mycon.Open();
//查询数据库
MySqlCommand mycmd = new MySqlCommand("select * from file", mycon);
MySqlDataReader myreader = mycmd.ExecuteReader();
//HasRows属性显示OleDbDataReader是否包含数据
if (myreader.HasRows)
{
string strline;
//读取记录到ListView控件内
while (myreader.Read())
{
//添加到空间里
ListViewItem li = new ListViewItem();
//添加ID号
strline = myreader["ID"].ToString();
li.Text = strline;
//添加文件的ID
strline = myreader["FileID"].ToString();
li.SubItems.Add(strline);
//添加文件的标题title
strline = myreader["Title"].ToString();
li.SubItems.Add(strline);
//添加到listview控件里
MySqlList.Items.Add(li);
}
}
//关闭数据库连接
myreader.Close();
//关闭数据库
mycon.Close();
1、使用C#连接SQLite的时候,通过Add References引用SQLite ADO .NET安装目录的bin目录下的System.Data.SQLite.DLL文件,该文件是安装了SQLite for net4驱动安装文件才会出现的,该驱动文件分为32位版本和64位版本,如下所示:
2、安装相应版本之后,打开安装目录,会发现该文件,如下所示:
3、创建C#的工程的时候,需要在引用里添加上该项,如下所示:
4、添加上该引用之后,在程序代码里面加上下面的命名空间:
using System.Data.SQLite;
5、下面是连接SQLite数据库的代码,如下所示:
//创建一个密码为空的SQLite数据库
SQLiteConnection.CreateFile("c:\\test1.db");
//创建一个密码为password的空的SQLite数据库
SQLiteConnection.CreateFile("c:\\test2.db");
SQLiteConnection cnn = new SQLiteConnection("Data Source=C:\\test2.db");
cnn.Open();
cnn.ChangePassword("password");
//连接数据库
//使用SQLiteConnection来连接数据库
SQLiteConnection conn = new SQLiteConnection("Data Source=C:\\test.db");
//如果数据库加了密需要设置密码,没有下面的代码就不需要
conn.SetPassword("password");
//打开连接
conn.Open();
//或者使用SQLiteConnectionStringBuilder进行数据库的连接
//构建连接字符串
SQLiteConnectionStringBuilder builder = new SQLiteConnectionStringBuilder();
//创建数据库的位置
builder.DataSource = @"c:\\test.db";
//设置数据库的密码
builder.Password = @"password";
SQLiteConnection con = new SQLiteConnection(builder.ConnectionString);
//打开连接
con.Open();
//数据库的操作
//创建表
SQLiteCommand cmd = conn.CreateCommand();
cmd.CommandText = "create table users(email varchar(20),name varchar(20))";
cmd.Connection = conn;
cmd.ExecuteNonQuery();
//INSERT插入数据
cmd.CommandText = "INSERT INTO users VALUES ('user01@mail.com','user01')";
cmd.ExecuteNonQuery();
//UPDATE修改数据
cmd.CommandText = "UPDATE users SET name = 'Codelicious' WHERE name = \"user01\"";
cmd.ExecuteNonQuery();
//delete删除语句
cmd.CommandText = "DELETE from users WHERE name = \"Codelicious\"";
cmd.ExecuteNonQuery();
//删除数据库的表
cmd.CommandText = "drop table users";
cmd.ExecuteNonQuery();
//select查询数据库
cmd.CommandText = "SELECT email,name FROM users";
SQLiteDataReader reader = cmd.ExecuteReader();
if (reader.HasRows)
{
while (reader.Read())
{
MessageBox.Show("email: " + reader.GetString(0));
MessageBox.Show("name: " + reader.GetString(1));
}
}
//关闭连接
conn.Close();