northwind和pubs是示例数据库,我们可以利用它们做演示。
目前创新互联建站已为上1000+的企业提供了网站建设、域名、网站空间、网站托管、服务器租用、企业网站设计、咸宁网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
因为其它几个是系统数据库,不可以随便更改,联机帮助上的例子基本上都以northwind和pubs这两个数据来举例。
步骤/方法
1
在我们c#与sql链接的过程中,一般会有两种方法,而每种方法均赋予了不同的权限;如下:
1、集成的Windows身份验证语法范例:
String connectionString = "server=localhost;database=Northwind;integrated security=SSPI";
代码说明:其中server表示运行Sql Server的计算机名,由于在本书中,ASP.NET程序和数据库系统是位于同一台计算机的,所以我们可以用localhost取代当前的计算机名,当然localhost也可以用“.”来代替。database表示所使用的数据库名,这里设置为Sql Server自带的一个示例数据库--Northwind。由于我们希望采用集成的Windows验证方式,所以设置 integrated security为SSPI即可。
注意:在使用集成的Windows验证方式时,并不需要我们输入用户名和口令,而是把登录Windows时输入的用户名和口令传递到Sql Server。然后Sql Server检查用户清单,检查其是否具有访问数据库的权限。而且数据库连接字符串是不区分大小写的。
2
2、采用Sql Server身份验证的语法范例:
string connectionString = "server=localhost;database=Northwind;uid=sa;pwd=sa";
代码说明:在上述语法范例的程序代码中,采用了使用已知的用户名和密码验证进行数据库的登录。localhost可以用“.”来代替,uid为指定的数据库用户名,pwd为指定的用户口令。为了安全起见,一般不要在代码中包括用户名和口令,你可以采用前面的集成的Windows验证方式或者对Web.Config文件中的连接字符串加密的方式提高程序的安全性。
END
注意事项
在我们运用以上两种方法中的任何一种的时候,我们一定要注意以下几点:
1、细心:我们在编写链接字符串的时候,一定要认真加仔细,因为c#是区分字母的大小写的,同时在某种情况下,还对空格敏感;在笔者还是菜鸟的时候,就因为一个空格的问题,使本人纠缠了2天而郁闷万分,最后一查,竟然是一个空格惹的祸;
2、权限:这里,就是要大家注意的是,我们链接数据库的权限一定要获取正确,如果权限不正确,那再认真和仔细,也是枉然;
3、网速:在我们开发的c#程序中,也偶尔会出现因为网速巨慢引起的sql链接故障的问题,那么我们在检查以上2种都无误的情况下,去测试一下你的网速是否出现异常,由此来判断一下你的数据库链接是否真正有误;这,是否是c#中的一个小bug呢?欢迎大家讨论!
其实啊,这本来是一个很easy的问题,就像我的引言中所说那样,不是很复杂,只要我们方法正确,足够仔细,就不会出现什么问题;
连接数据库
public class DBManager {
//定义数据库连接的URL
private static final String URL="jdbc:sqlserver://localhost:1433;database=j1105";
//定义数据库的用户名
private static final String USERNAME = "sa";
//定义数据库密码
private static final String PASSWORD = "sa";
//定义一个连接的引用,使用单例模式
private static Connection conn = null;
//使用静态块来注册驱动
//类加载时自动执行代码块
static {
//反射com.microsoft.sqlserver.jdbc.SQLServerDriver.class
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
//获得连接
//在程序使用过程中始终只有1个对象存在
//使用单例模式来给Connection赋值
public static Connection getConnection(){
if(conn == null){
try {
conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);
} catch (SQLException e) {
e.printStackTrace();
}
}
return conn;
}
/**
* 关闭的一些操作 , 优化
* @param conn
* @param stat
* @param rs
*/
public static void close(Connection conn,Statement stat,ResultSet rs){
try{
if(conn != null){
conn.close();
}
if(stat != null){
stat.close();
}
if(rs != null){
rs.close();
}
}catch(SQLException e){
e.printStackTrace();
}
}
/**
* 重写上面的方法,在只有2个参数的情况下关闭
* @param conn
* @param stat
*/
public static void close(Connection conn,Statement stat){
try{
if(conn != null){
conn.close();
}
if(stat != null){
stat.close();
}
}catch(SQLException e){
e.printStackTrace();
}
}
public static void main(String[] args){
Connection conn = DBManager .getConnection();
System.out.println(conn);
}
}
接口
public interface IStudentDao {
public void deleteStudent(int xh);
}
实现
public class StudentDAOimpl implements IStudentDao {
public void deleteStudent(int xh) {
try{
String sql = "delete from tb_student where xh = ?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setInt(1, xh);
ps.executeUpdate();
System.out.println("成功删除");
}catch(SQLException e){
e.printStackTrace();
}
}
}
select id, ISNULL(cast(Score as varchar),'空白') from T
select id, ISNULL(Score,'') from T
你看你到底是哪个意思