Java之MS SQL数据库连接
一
1.首先,到微软官方下载jdbc驱动包 Microsoft JDBC Driver 4.0 for SQL Server
2.运行sqljdbc_4.0.2206.100_chs.exe,把文件解压到C盘的program files目录下
3.打开C:\ProgramFiles\Microsoft JDBC Driver 4.0 for SQL Server\sqljdbc_4.0\chs\auth\x64 ,把sqljdbc_auth.dll复制到C:\Windows\System32目录下
4.把jdbc包的路径加入到环境变量中,右键计算机-属性-高级系统设置-高级-环境变量,找到path,把路径C:\ProgramFiles\Microsoft JDBC Driver 4.0 for SQL Server\sqljdbc_4.0\chs;添加到最后
二 往项目中导入jdbc包
三 与MSSQL连接并读取数据
可以新建一个专门处理数据库连接的类
import java.sql.*; public class CreateConn { private Connection conn; CreateConn(){} /*与数据库建立连接**/
public Connection getConnection()
{
try
{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); //连接MSSQL,建立桥接器
System.out.println("数据库驱动加载成功!"); String userName = "administrator"; //用户名
String passWord = "xxxx"; //密码
String url = "jdbc:sqlserver://localhost:1433;integratedSecurity=true;DatabaseName=XSBOOK"; //XSBOOK是数据库名 conn = DriverManager.getConnection(url,userName,passWord); //建立、连接数据源,用户名,密码 if(conn != null)
{
System.out.println("成功与数据库建立连接 !");
}
}
catch(Exception e)
{
e.printStackTrace();
}
return conn;
} }
可以新建一个StudentSearch类来查询学生信息
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.*; public class StudentSearch {
public static void main(String []args){
mainFrame frame = new mainFrame("学生信息查询");
} } class mainFrame extends JFrame implements ActionListener,Runnable{
/**
*
*/
private static final long serialVersionUID = 1L;
private Thread thread;
private JPanel panel; //控制面板
private JScrollPane text; //可滚动面板
private JLabel label; //提示标签
private JTextField name; //编辑文字面板
private JButton search; //查找按钮
private JButton clear; //清除按钮
private JTextArea display; //显示结果区域
private ResultSet rs; mainFrame(String title){
this.setTitle(title); //窗口名称
this.setSize(800,300); //窗口大小
this.setLocation(200,200); //窗口位置 thread = new Thread(this); //当前线程 label = new JLabel("请输入要查询的学生姓名或学号:");
name = new JTextField(10);
search = new JButton("搜索");
search.addActionListener(this);
clear = new JButton("清除");
clear.addActionListener(this); display = new JTextArea(10,10);
display.setEditable(false);//设置为不可编辑
display.append("| 学号"+" | "+" 姓名 "+" | "+" 性别 "+" | "+" 年龄 "+" | "+" 出生日期 "+" | "+" 学院 | "+" 政治面貌 "+" |"+"已借书籍数"+"|"+"应还书数 "+'\n'); panel = new JPanel(); text = new JScrollPane(display); panel.add(label);
panel.add(name);
panel.add(search);
panel.add(clear); this.add(text,BorderLayout.CENTER);
this.add(panel,BorderLayout.NORTH); this.setVisible(true);
this.validate();
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
} //监听器方法实现
@Override
public void actionPerformed(ActionEvent event)
{
// TODO Auto-generated method stub
if(event.getSource() == search) //查找按钮
{
if(!(thread.isAlive()))
thread = new Thread(this);
try
{
thread.start();
}
catch(Exception e){}
}
else if(event.getSource() == clear) //清除按钮
{
display.setText("| 学号"+" | "+" 姓名 "+" | "+" 性别 "+" | "+" 年龄 "+" | "+" 出生日期 "+" | "+" 学院 | "+" 政治面貌 "+" |"+"已借书籍数"+"|"+"应还书数 "+'\n');
}
} //线程方法复写
@Override
public void run()
{
// TODO Auto-generated method stub
CreateConn create = new CreateConn();
Connection conn = create.getConnection(); //与数据库建立连接
rs = search(conn); //返回搜索结果 try
{
while(rs.next()) //读取内容
{
String name = rs.getString(1);
String num = rs.getString(2);
String sex = rs.getString(3);
String age = rs.getString(4);
String birthdate = rs.getString(5);
String college = rs.getString(6);
String party = rs.getString(7);
String borrowBookN = rs.getString(8);
String returnBookN = rs.getString(9);
display.append(num+" "+name+" "+sex+" "+age+" "+birthdate+" "+college+" "+party+" "+borrowBookN+" "+returnBookN+'\n');
}
}
catch (SQLException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
} //查找匹配,返回查找结果ResultSet
public ResultSet search(Connection conn)
{
try
{
String studentName = name.getText().trim();
Statement sql = conn.createStatement(); //SQL对象 if(studentName.equalsIgnoreCase("郑海生") || studentName.equalsIgnoreCase("2012150027"))
rs = sql.executeQuery("SELECT * FROM Student_BookMessage WHERE 姓名 = '郑海生'"); //执行语句
else if(studentName.equalsIgnoreCase("卢志鹏") || studentName.trim().equalsIgnoreCase("2012150001"))
rs = sql.executeQuery("SELECT * FROM Student_BookMessage WHERE 姓名 = '卢志鹏'");
else if(studentName.trim().equalsIgnoreCase("胡锦涛") || studentName.trim().equalsIgnoreCase("2011180128"))
rs = sql.executeQuery("SELECT * FROM Student_BookMessage WHERE 姓名 = '胡锦涛'");
else if(studentName.equalsIgnoreCase("江泽民") || studentName.trim().equalsIgnoreCase("2009110001"))
rs = sql.executeQuery("SELECT * FROM Student_BookMessage WHERE 姓名 = '江泽民'");
else rs = sql.executeQuery("SELECT * FROM Student_BookMessage WHERE 姓名 = '习近平'"); }
catch(SQLException e){} return rs;
} }
效果图
Java之MS SQL数据库连接的更多相关文章
- CentOS 65 java 访问 MS SQL
#install unixODBC sudo yum install unixODBC unixODBC-devel -y #install freetds #1st download freetds ...
- java连接ms sql server各类问题解析
首先先来说下使用微软自己开发的架包进行ms sql server数据库的连接时,sql 2000与sql 2005的连接方式略有不同: 1.首先驱动不一样,sql 2000的连接驱动包有三个,分别是: ...
- MS SQL Server 数据库连接字符串详解
MS SQL Server 数据库连接字符串详解 原地址:http://blog.csdn.net/jhhja/article/details/6096565 问题 : 超时时间已到.在从池中获取连接 ...
- Linux下使用FreeTDS访问MS SQL Server 2005数据库(包含C测试源码)
Linux下使用FreeTDS访问MS SQL Server 2005数据库(包含C测试源码) http://blog.csdn.net/helonsy/article/details/7207497 ...
- 在易语言中调用MS SQL SERVER数据库存储过程方法总结
Microsoft SQL SERVER 数据库存储过程,根据其输入输出数据,笼统的可以分为以下几种情况或其组合:无输入,有一个或多个输入参数,无输出,直接返回(return)一个值,通过output ...
- ms sql server 在abator生成的 insert 无法获取插入 id 的原因
<insert id="abatorgenerated_insert" parameterClass="net.xxxxxl.dataobject.Users&qu ...
- Java学习-006-三种数据库连接 MySQL、Oracle、sqlserver
此文主要讲述在初学 Java 时,常用的三种数据库 MySQL.Oracle.sqlserver 连接的源代码整理.希望能对初学 Java 编程的亲们有所帮助.若有不足之处,敬请大神指正,不胜感激!源 ...
- [转]ms sql 2000 下批量 附加/分离 数据库(sql语句)
这次公司要把MS SQL Server 2000 服务器上的数据库复制到新的服务器上面去,于是几百个数据库文件就交给我附加到新服务器上了 以前一直没接触过这方面的东西,于是果断谷歌了也百度了 找 ...
- Set up JBPM5.4 Final Installer to use MS SQL Server 2008 using JTDS(转)
[-] A What I Am Going To Do B The Setup Steps C Lets Install it A. What I Am Going To Do B. The Se ...
随机推荐
- Codeforces Round #364 (Div.2) C:They Are Everywhere(双指针/尺取法)
题目链接: http://codeforces.com/contest/701/problem/C 题意: 给出一个长度为n的字符串,要我们找出最小的子字符串包含所有的不同字符. 分析: 1.尺取法, ...
- public, protected, private, internal, protected internal简析
public是可访问权限最高的,比如姓名,每个人都可以知道别人的姓名,这个不是什么秘密 protected的访问权限要低些,只有子类才可以访问得到父类的protected属性.就好像老子的财产只有儿子 ...
- homework-附加题:第12章基本数据类型阅读总结
基本数据类型是构建其他所有数据类型的构造块,本人认为这部分是计算机编程的基础,值得得到大家的注意. 首先,在本章中作者提到了避免使用magic number.使用magic number这种做法是极其 ...
- Java设计模式系列之状态模式
状态模式(State)的定义 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新.允许一个对象在其内部状态改变时改变它的行为.对象看起来似乎修改了它 ...
- HDU 4370 0 or 1 (最短路+最小环)
0 or 1 题目链接: Rhttp://acm.hust.edu.cn/vjudge/contest/122685#problem/R Description Given a n*n matrix ...
- wordpress后台打开慢/卡顿的解决方法
---------------------2014年12月29日更新--------------------- 我已经用下面提到的第三种方法禁用了谷歌字体了,最近wordpress后台还是莫名奇妙地非 ...
- POJ 2762 Going from u to v or from v to u? (强连通分量缩点+拓扑排序)
题目链接:http://poj.org/problem?id=2762 题意是 有t组样例,n个点m条有向边,取任意两个点u和v,问u能不能到v 或者v能不能到u,要是可以就输出Yes,否则输出No. ...
- Unity3D之ScriptableObject学习笔记
不同与C#提供的Serializable序列化功能,ScriptableObject是Unity3D提供的一个数据存储类,我们接下来学习一下这个类的功能. 官方文档 http://docs.unity ...
- python 实现冒泡排序与快速排序 遇到的错误与问题
今天看了兄弟连php里面的冒泡排序与快速排序,想了下应该可以用python实现. 冒泡排序函数: def mysort(x): len1 = len(x) for i in range(len1-1, ...
- mysql与java数据类型对照
类型名称 显示长度 数据库类型 JAVA类型 JDBC类型索引(int) 描述 VARCHAR L+N VARCHAR java.lang.String 12 CHAR N CHAR java.lan ...