zoukankan      html  css  js  c++  java
  • 用ASP.NET/C#连接Access和SQL Server数据库

    连接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 连接数据库例子:

    不用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");
             }

  • 相关阅读:
    基于RBAC的权限设计模型
    RBAC用户权限管理数据库设计
    系统多语言实践(二)
    多语言系统的数据库设计
    系统多语言实践(一)
    企业后台模板
    MYSQL
    JS,Jquery
    BootStrap
    KindEditor
  • 原文地址:https://www.cnblogs.com/gates/p/3129480.html
Copyright © 2011-2022 走看看