vs2010 中sql 测试数据库小结
2011-03-05 18:03:49
---------------------------------
首先新建一个DAL项目
将其自动生成的class1.cs Rename 成 SQLHelper 数据库助手
要进行数据操作就要用到数据集之类的东西,就要引用相关的程序集 也就是引入相应的命名空间
--------------------------------------------------------------------------------------------------------
程序集其实就是一个DLL,引用程序集是调用其中类的必备条件
一个程序集包括一个或多个命名空间
例如我们在这里要引用的命名空间
System.Data 及 System.Data.SqlClient 都是来同一个程序集 System.Data.DLL
---------------------------------------------------------------------------------------------------------
那么在这里引用
using System.Data
using System.Data.SqlClient
那么之后 就在
SQLHelper 类中来编写测试方法
---------------------------------------------------------------------------------------------------------
public int test(){
/*第一步: 新建一个链接数据库的字符串
*这个连接字符串中有四个参数
*参数一:server = "链接数据库服务器的名称" 如果是本地数据库 可以直
*接用 server=(local) 即可 假如数据库服务器名称为hostDB
*也可以写成server = hostDB 也可以 但是如果 服务器名称中包含有 斜杠 就要转换 写成这样 :
* connStr = @"server= system/hostDB" 即加上@符号
*参数二:database ="本项目的数据库"
*参数三:User Id = "数据库登陆名"
*参数四:pwd = "登陆密码"
*/
string connStr = "server = (local); database = testdatabase; User Id = sa ; pwd = 123456";
/*第二步:实例化连接字符串对象*/
SqlConnection conn = new SqlConnection(connStr);
/*第三步:初始化SQL语句*/
string sql = "insert into category(name) values('测试');
/*第四步:实例化执行命令*/
SqlCommand cmd = new SqlCommand(sql,conn);
/*返回测试结果*/
int res = cmd.ExecuteNonQuery();
}
写好之后 回到前台页面来调用这个测试方法
当然要调用它 最开始就要引用它
using DAL;
接着在Page_Load()方法中显示出来
Response.Write(SQLhelper. /*解释*/);
/*解释*/
/*在这里通过 . 运算符没法调用 test() 方法 可是我们明明谢谢了test()方法的啊, Web 层调用DAL 要引用DAL才能调用 于是就在Web层中右键引用,但是没有显示引用了DAL 这个为什么呢? 这个道理和前面说的引用命名空间一样,要引用DAL中的test()方法 即引用DAL程序集中的test() 程序集是一个DLL 那么这里我们之所以引用了DAL没有在Web层中显示已经引用了的DAL是因为我们DAL编好这后没有编译它 也就是说没有编译出DAL的DLL程序集 所有我们编译一下DAL 然后就可以了 我们接着再回到Respose.Write (SQLHelper. ) 这里 但是我们试图通过. 运算符来调用test() 方法时还是不得行,那又是什么原因呢? 我们回到 SQLHelper类中来找原因 这里我们发现 无论是SQLHelper 还是其中的test()方法多不是 static 静态的,不是静态的方法或类意味要现实化例化采用调用
在这里有两种解决办法 一种是将 test()方法改成静态的 public static int test() {//.....} 这样的话我们就可以在前台通过.运算符调用了:Response.Write(SQLHelper.test()) ; 但是我们通常不这么做,是因为 static 的方法每次调用时都要先初始化才能用 这要有时候就很影响我们的项目运行的性能 我们通常是实例化来调用test()方法 Response.Write(new SQLHelper().test());
*/
好了代码写完了, ctrl + F5 运行 发现出错了 错误截图:
这个是什么原因呢? 原因在于 我们不是通过 SqlConnection 对象 conn来调用数据库吗? 对于这个数据库连接字符串 在使用前要调用它的Open()方法来打开数据库 使用完后要调用它的Close()方法来关闭数据库
在第三步之前 加上conn.Open(); 第四步之后加上 conn.Close();
好了, 可以正常运行了。