import java.sql.Connection。
import java.sql.DriverManager
import java.sql.PreparedStatement
import java.sql.ResultSet
import java.sql.SQLException
import javax.naming.Context
import javax.naming.InitialContext
import javax.naming.NamingException
import javax.sql.DataSource
public class DBCon {
//数据库驱动对象
public static final String DRIVER="oracle.jdbc.driver.OracleDriver"
//数据库连接地址(数据库名)
public static final String URL="jdbc:oracle:thin:@localhost:1521:orcl"
//登陆名
public static final String USER="FM"
//登陆密码
public static final String PWD="FM"
//创建数据库连接对象
private Connection con=null
//创建数据库预编译对象
private PreparedStatement ps=null
//创建结果集
private ResultSet rs=null
//创建数据源对象
public static DataSource source=null
// //静态代码块
// static{
//
// //初始化配置文件context
// try {
// Context context=new InitialContext()
// source=(DataSource)context.lookup("java:comp/env/jdbc/webmessage")
// } catch (Exception e) {
// // TODO Auto-generated catch block
// e.printStackTrace()
// }
//
//
// }
/**
* 获取数据库连接
*/
public Connection getCon(){
try {
Class.forName(DRIVER)
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace()
}
try {
con=DriverManager.getConnection(URL,USER,PWD)
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace()
}
return con
}
// /**
// * 获取数据库连接
// */
// public Connection getCon(){
//
// try {
// con=source.getConnection()
// } catch (SQLException e) {
// // TODO Auto-generated catch block
// e.printStackTrace()
// }
//
// return con
// }
/**
* 关闭所有资源
*/
public void closeAll(){
if(rs!=null)
try {
rs.close()
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace()
}
if(ps!=null)
try {
ps.close()
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace()
}
if(con!=null)
try {
con.close()
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace()
}
}
/**
* @param sql数据库更新(增、删、改) 语句
* @param pras参数列表(可传,可不传,不传为NULL,以数组形式存在)
* @return 返回受影响都行数
*/
public int update(String sql,String... pras){
int resu=0
con=getCon()
try {
ps=con.prepareStatement(sql)
for(int i=0i<pras.lengthi++){
ps.setString(i+1,pras[i])
}
resu=ps.executeUpdate()
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace()
}
finally{
closeAll()
}
return resu
}
/**
* @param sql数据库查询语句
* @param pras参数列表(可传,可不传,不传为NULL,以数组形式存在)
* @return 返回结果集
*/
public ResultSet query(String sql,String... pras){
con=getCon()
try {
ps=con.prepareStatement(sql)
if(pras!=null)
for(int i=0i<pras.lengthi++){
ps.setString(i+1, pras[i])
}
rs=ps.executeQuery()
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace()
}
return rs
}
}
1.首先要去Microsoft官网下载sqljdbc2.0驱动——Microsoft SQL Server JDBC Driver 2.0.exe,很小大概就4M,解压后里面有2个Jar包,sqljdbc4.jar和sqljdbc.jar,这两个都一样,只是针对你的JDK的版本的不同,如果你是JDK6.0直接导入sqljdbc4.jar,以下版本的导入sqljdbc.jar,如果怕麻烦的,两个都导进去也行。2.包导完了,现在启动SQL配置器,SQL2000的默认端口是1433,所以只要开启端口就能连得上,但08的端口据说是动态的,具体的本人也不清楚,就是因为这个端口我也被整了2天,最后终于连上了
打开配置器:
将IP ALL的TCP动态端口(默认1163)改为1433,不改也行,因为大部分人的习惯是用默认的1433,在IP2已启用选择——是,确定。
同样的方法,开启客户端的TCP/IP,端口也为1443,如图:
然后在DOS命令中输入测试 telnet 127.0.0.1 1433,
如果结果只有一个光标在闪动,那么就说明127.0.0.1 1433端口已经打开。
如果出现连接主机端口1433没打开,久要换端口。
一ODBC建立数据源
1 利用Java应用程序访问SQL Server2000数据库
(1)建立数据库
启动“Microsoft SQL Server2000”,打开“企业管理器”在“数据库”中建立名为“学生管理系统”的数据库,并在其下制作名为“学生信息”的数据表,如图1示。
(2)建立(ODBC)数据源和驱动程序
在控制面板上通过“管理工具”的“数据源(ODBC)”打开“ODBC数据源管理器”对话框,单击“系统DSN”选项卡,然后单击“添加”按钮,得到“创建数据源”对话框,选择“SQL Server”并单击“完成”按钮,在出现的“建立新的数据源到SQL Server”对话框中的“数据源名称”项填写“madata”并选取“服务器名”,然后单击“下一步”按钮,选择“使用网络登录ID的Windows NT验证”项目,单击“下一步”按钮,把默认的数据库改为“mydata”,再单击“下一步”,单击“完成”按钮,然后可以单击“测试数据源”,成功后,单击“确定”按钮,完成了(ODBC)数据源和驱动程序的建立。
(3)编写Java程序
package com.test1
import java.util.*
import java.awt.*
import java.awt.event.*
import javax.swing.*
import java.sql.*
public class Test extends JFrame{
JPanel jp1,jp2
JLabel jl1
JButton jb1,jb2,jb3,jb4
JTable jt=null
JScrollPane jsp=null
JTextField jtf
PreparedStatement ps=null
Connection ct=null
ResultSet rs=null
Vector rowData,columName
public static void main(String args[])
{
Test test=new Test()
}
public Test()
{
jp1=new JPanel()
jl1=new JLabel("请输入名字:")
jtf=new JTextField(10)
jb1=new JButton("查询:")
jp1.add(jl1)
jp1.add(jtf)
jp1.add(jb1)
jp2=new JPanel()
jb2=new JButton("添加:")
jb3=new JButton("修改:")
jb4=new JButton("删除:")
jp2.add(jb2)
jp2.add(jb3)
jp2.add(jb4)
columName = new Vector()
columName.add("学号")
columName.add("姓名")
columName.add("班级")
columName.add("系别")
columName.add("年龄")
columName.add("性别")
columName.add("籍贯")
rowData =new Vector()
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver")
ct=DriverManager.getConnection("jdbc:odbc:mydata")
ps=ct.prepareStatement("select *from 学生信息")
rs=ps.executeQuery()
while(rs.next())
{
Vector hang=new Vector()
hang.add(rs.getString(1))
hang.add(rs.getString(2))
hang.add(rs.getString(3))
hang.add(rs.getString(4))
hang.add(rs.getInt(5))
hang.add(rs.getString(6))
hang.add(rs.getString(7))
rowData.add(hang)
}
}
catch(Exception e)
{
System.out.println("数据库加载失败!")
}
finally
{
}
System.out.println("数据库加载成功!")
jt=new JTable(rowData,columName)
jsp=new JScrollPane(jt)
this.add(jp1,"North")
this.add(jsp)
this.add(jp2,"South")
this.setSize(400,300)
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
this.setVisible(true)
}
}
注意其中要引入jar包sqljdbc 2.0
1、创建一个 PreparedStatement 对象来将参数化的 SQL 语句发送到数据库。2、 patat.setInt(1,id) 将第一个参数id设置为java给定int 值。
3、在PreparedStatement 对象中执行 SQL 查询,并返回该查询生成的 ResultSet 对象。
4、ResultSet 光标最初位于第一行之前;第一次调用 next 方法使第一行成为当前行;第二次调用使第二行成为当前行,依此类推
5、以 Java 编程语言中 String 的形式获取此 ResultSet 对象的当前行中指定列的值