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