java如何实现sql连接和查询的代码?

Python028

java如何实现sql连接和查询的代码?,第1张

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 对象的当前行中指定列的值