C#连接数据库编程

2025-10-16 17:25:41

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文件,引用的方式就是在右键点击项目,选择”添加引用”,如下所示:

C#连接数据库编程

2、点击”浏览”项,如下所示:

C#连接数据库编程

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位版本,如下所示:

C#连接数据库编程

2、安装相应版本之后,打开安装目录,会发现该文件,如下所示:

C#连接数据库编程

3、创建C#的工程的时候,需要在引用里添加上该项,如下所示:

C#连接数据库编程

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();

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢