用ASP.NET/C#连接Access和SQL Server数据库

时间:2020-11-30 13:38:17

连接Access

首先看一个例子代码片段:

程序代码:

 1 using system data;
 2 
 3 using system data.oledb;
 4 
 5 ......
 6 
 7 // 建立指向数据库的连接 
 8 string strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +Application.StartupPath + "\\login.mdb";
 9 OleDbConnection aConnection = new OleDbConnection(strConnect);
10 
11 // 设计所需要返回的数据集的内容 
12  OleDbCommand aCommand = new OleDbCommand("select * from Register where ID = (select max(ID) from Register)", aConnection);
13 
14             try
15             {
16                 // 打开指向数据库连接 
17                 aConnection.Open();
18                 // 返回需要的数据集内容 
19                 OleDbDataReader aReader = aCommand.ExecuteReader();
20 
21                 Console.WriteLine("以下就是打开后的数据集的一个字段的所有内容!");
22 
23                  while (aReader.Read())
24                  {
25 
26                          Console.WriteLine(aReader.GetInt32(0));
27                          Console.WriteLine(aReader.GetString(1));
28                   }
29                 aReader.Close();
30                 // 关闭数据集 
31                 aConnection.Close();
32                 // 关闭指向数据库的连接 
33 
34 
35             }
36             catch (OleDbException ee)
37             {
38                 Console.WriteLine("错误类型:", ee.Errors[0].Message);
39                 // 如果出错,输出错误信息 
40             }

解释:

连接Access数据库需要导入额外的命名空间,所以有了最前面的两条using命令

 strConnect这个变量里存放的是连接数据库所需要的连接字符串,他指定了要使用的数据提供者和要使用的数据源。

"provider = microsoft.jet.oledb.4.0;"时至数据提供者,这里使用的是microsoft jet引擎,也就是Access中的数据引擎,asp.net就是靠这个和Access数据库连接的。

"Data Source= Application.StartupPath + "\\login.mdb""是指明数据源的位置,他的标准形式是"data source = mydrive:mypath\myfile.mdb"

ps:

  1."+="后面的"@"符号是泛防止将后面的字符串中的"\"解析为转义字符。

  2.如果要连接的数据库文件盒当前文件在同一个目录下,还可以使用如下的方法连接:

    strConnect += "data source = ";

    strConnect +=mappath("数据库名.mdb");

    这样就可以省得你写一大堆东西了。

  3.要注意连接字符串中的参数之间要用分号来分隔。

OleDbConnection aConnection = new OleDbConnection(strConnect);这一句是利用定义好的连接字符串来简历了一个链接对象,以后对数据库的操作我们都要和这个对象打交道。

aConnection.Open();这用来打开连接。至此,与Access数据库的连接完成。

 

拦连接sql Server

例子代码片段:

程序代码:

using system.data;

using system.data.sqlclient;

......

string strConn = " user id = sa; password = ;";

strConn += "initial catalog = northwind; server = yoursqlserver;";

strConn += " connect timeout = 30";

 

sqlconnection connection = new sqlconnection(strConn);

......

connection.open();

connection.close();

......

解释:

连接sql server数据库的机制与连接access的机制没有什么太大的区别,只是改变了connection对象和连接字符串中的不同参数。

首先,连接sql server使用的命名空间不是"system.data.oledb"而是"system.data.sqlclient".

其次,就是他的连接字符串了,我们一个一个参数来介绍(注意参数间用分号分隔):

  "user id = sa":连接数据库的验证用户名为sa,他还有一个别名"uid",所以这句我们还可以写成"uid = sa"。

  "passwrd = ":连接数据库的验证密码为空。他的别名为"pwd",所以这句我们还可以写成"pwd = ".

  注意:

  这里,你的sql server 必须已经设置了需要用户名和密码来登录,否则不能用这样的方式来登录。如果,你的sql server 设置为windows登录,那么在这里就不需要使用"user id"和"password"这样的方式来登录。而需要使用"trusted_connection = sspi"来进行登录。

  "initial catalog = northwind":使用的数据源为"northwind"这个数据库,他的别名为"database",本句可以写成"database = northwind"。

  "server= yoursqlserver":使用名为"yoursqlserver"的服务器,他的别名为"Data Source"、"address"、"addr",如果使用的是本地数据库且定义了实例名,则可以写成"server = (local)\实例名";如果是远程服务器,则将"(local)"替换为远程服务器的名称或ip地址。

  "connect timeout = 30":连接超时时间为30秒。

在这里,建立连接对象的构造函数为:sqlconnection。

其余的就和access没有什么区别了!

 

sql server 连接数据库例子:

用ASP.NET/C#连接Access和SQL Server数据库
不用web.config文件的情况下:
  1 static string m_StrConn = " server=" + @".\sqlexpress" + ";database=ASPNET_DB;Integrated Security=True";
  2 
  3 /// <summary>
  4 /// 查询结果集
  5 /// </summary>
  6 /// <param name="sqlText">SQL文</param>
  7 /// <param name="sqlParams">SQL文中需要的参数</param>
  8  /// <returns></returns>
  9 public static SqlDataReader HelperGetDataReader(string sqlText, params SqlParameter[] sqlParams)
 10 {
 11        SqlConnection conn = new SqlConnection(m_StrConn);
 12        SqlCommand cmd = new SqlCommand(sqlText, conn);
 13        conn.Open();
 14         foreach (SqlParameter param in sqlParams)
 15          {
 16                 cmd.Parameters.Add(param);
 17          }
 18          //if (sqlParams != null && sqlParams.Length > 0)  //这两种方法都可以
 19         //{
 20          //    cmd.Parameters.AddRange(sqlParams);
 21           //}
 22         return cmd.ExecuteReader();
 23 }
 24 /// <summary>
 25         /// 执行SQL语句
 26         /// </summary>
 27         /// <param name="sqlText"></param>
 28         /// <param name="sqlParam"></param>
 29         /// <returns></returns>
 30         public static string HelperExecScalar(string sqlText, params SqlParameter[] sqlParam)
 31         {
 32             SqlConnection connection = new SqlConnection(m_StrConn); //指定连接的数据库
 33             SqlCommand cmd = new SqlCommand(sqlText, connection); //创建命令
 34             connection.Open();  //打开数据库
 35             foreach (SqlParameter f in sqlParam)
 36             {
 37                 cmd.Parameters.Add(f);
 38             }
 39             string dr = "";
 40             object obj = cmd.ExecuteScalar();
 41             if(obj != null)
 42              dr = obj.ToString();
 43             return dr;
 44             //SqlDataReader dr = cmd.ExecuteReader();
 45             //if (dr.Read())
 46             //{
 47             //    return true;
 48             //}
 49             //else
 50             //{
 51             //    return false;
 52             //}
 53 
 54         }
 55 /// <summary>
 56         /// 插入|更新|删除 操作
 57         /// </summary>
 58         /// <param name="sqlText"></param>
 59         /// <param name="sqlParameter"></param>
 60         /// <returns>true:插入|更新|删除 成功
 61         /// </returns>false:插入|更新|删除 失败
 62         internal static bool HelperExecNonQuery(string sqlText, params SqlParameter[] sqlParameter)
 63         {
 64             bool isSuccess = false;
 65             int count = 0;
 66             SqlConnection conn = new SqlConnection(m_StrConn);
 67             SqlCommand cmd = new SqlCommand(sqlText, conn);
 68             conn.Open();
 69             foreach (SqlParameter param in sqlParameter)
 70             {
 71                 cmd.Parameters.Add(param);
 72             }            
 73             count = cmd.ExecuteNonQuery();
 74             if (count > 0)
 75             {
 76                 isSuccess = true;
 77             }
 78             else
 79             {
 80                 isSuccess = false;
 81             }
 82             return isSuccess;
 83         }
 84 
 85         public static DataSet HelperGetDataSet(string sqlText, params SqlParameter[] sqlParameter)
 86         {
 87             using (SqlConnection conn = new SqlConnection(m_StrConn))
 88             {
 89                 conn.Open();
 90                 DataSet ds = new DataSet();
 91                 SqlDataAdapter sda = new SqlDataAdapter();
 92                 SqlCommand cmd = new SqlCommand(sqlText, conn);
 93                 foreach (SqlParameter param in sqlParameter)
 94                 {
 95                     cmd.Parameters.Add(param);
 96                 }  
 97                 sda.SelectCommand = cmd;
 98                 sda.Fill(ds);
 99                 return ds;
100             }
101         }

 

使用web.config的情况:

web.config (配置文件) 中

1   <appSettings>
2     <add key="ConnectionString" value="server=LLLLLL\SQLEXPRESS; trusted_connection=sspi; database=ASPNET_DB"/>
3   </appSettings>

C#代码中,调用

1 static string m_StrConn = System.Configuration.ConfigurationManager.AppSettings["ConnectionString"].ToString();


还有个例子:

不用web.config直接在文件中写

SqlConnection conn = new SqlConnection("server=.\\SQLEXPRESS;uid=sa;pwd=123456;database=login");

如何是Express版的数据库,一定要在服务器名的后面加上 \\SSQLEXPRESS

一个完整的例子

   string userName = Request.Form["userName"];
         string userPwd = Request.Form["userPwd"];
         SqlConnection con = new SqlConnection("server=localhost\\SqlExpress;uid=sa;pwd=123456;database=login");
         con.Open();
         SqlCommand cmd=new SqlCommand("select count(*) from login where userName='"+userName+"' and userPwd='"+userPwd+"'",con);
         int count=Convert.ToInt32(cmd.ExecuteScalar());
         if(count>0)
         {
         Response.Redirect("main.aspx");
         }