连接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");
}