myeclipse链接sql数据库的类的代码怎么写

是Javaproject不是Javaweb... 是Java project 不是Java web 展开
 我来答
0808xyj
2014-11-18 · TA获得超过1891个赞
知道大有可为答主
回答量:1237
采纳率:100%
帮助的人:1079万
展开全部
前期准备工作,安好JDK,MyEclipse。
下载JDBC驱动mysql-connector-java-5.0.5-bin.jar导入到工程中去
1、工程(右键)--buildpath--configure build path--add external jars。
2、 也可以加到classpath中去,具体如下:“我的电脑”-> “属性” ->“高级” -> “环境变量”,在系统变量那里编辑classpath,将D:\mysql-connector-java-5.0.5\mysql- connector-java-5.0.5-bin.jar加到最后,在加这个字符串前要加“;”,以与前一个classpath区分开,然后确定。
测试代码:所用驱动 mysql-connector-java-5.0-nightly-20071116-bin.jar
程序中引用必要的包:import java.sql.*;  //它包含有操作数据库的各个类与接口
1、加载合适的JDBC驱动程序
Class.forName(Driver);
   MySQL驱动程序:com.mysql.jdbc.Driver
   Oracle驱动程序:oracle.jdbc.driver.OracleDriver
   SQLServer驱动程序:
   com.Microsoft.jdbc.sqlserver.SQLServerDriver
2、建立数据库连接
与MySQL数据库连接的方法:
Connection con=DriverManager.getConnection(“jdbc:mysql://主机IP或主机名:3306/数据库名”,用户名,密码);
java.sql.DriveManager  用来处理装载驱动程序并且为创建新的数据库连接提供支持;
–java.sql.Connection  用于完成对特定定数据库的连接;
–java.sql.Statement  用于对特定的数据库执行SQL语句;java.sql.Statement又包含了以下两个重要的子类型:
       java.sql.PreparedStatement  用于执行预编译的SQL语句;
       java.sql.CallableStatement  用于执行数据库中存储的过程的调用;
--java.sql.ResultSet  用于保存查询所得的结果集
3、创建Statement对象
Statement  st=con.createStatement();  //最后可以不关闭,但推荐关闭
利用Statement对象可以执行静态SQL语句,静态SQL语句可以是Select语句、Delete语句、Update语句和Insert语句。
执行SQL语句
Statement接口提供了三种执行SQL语句的方法:executeQuery()、executeUpdate() 和execute()。具体使用哪一个方法由SQL语句本身来决定。
方法 executeQuery 用于产生单个结果集的语句,例如 SELECT 语句等。
方法 executeUpdate 用于执行INSERT、UPDATE或DELETE 语句以及SQL DDL(数据定义语言)语句,例如 CREATE TABLE 和 DROP TABLE。INSERT、UPDATE 或DELETE 语句的效果是修改表中零行或多行中的一列或多列。executeUpdate 的返回值是一个 整数,指示受影响的行数(即更新计数)。对于 CREATE TABLE 或DROP TABLE 等不操作行的语句,executeUpdate 的返回值总为零。
方法 execute 用于执行返回多个结果集、多个更新计数或二者组合的语句。一般不会需要该高级功能。
      ①JDBC在编译时并不对将要执行的SQL查询语句作任何检查,只是将其作为一个String类对象,直到驱动程序执行SQL查询语句时才知道其是否正确。对于错误的SQL查询语句,在执行时将会产生 SQLException。
      ②一个Statement对象在同一时间只能打开一个结果集,对第二个结果集的打开隐含着对第一个结果集的关闭。
      ③如果想对多个结果集同时操作,必须创建出多个Statement对象,在每个Statement对象上执行SQL查询语句以获得相应的结果集。
      ④如果不需要同时处理多个结果集,则可以在一个Statement对象上顺序执行多个SQL查询语句,对获得的结果集进行顺序操作。
str="insertinto customer values('wangyang',24,'beijing','wangyang@sina.com')";
int  recordNumber=st.executeUpdate(str);执行executeUpdate()方法返回该SQL语句涉及的记录数。
str="select* from mycustomer";   //查询表中记录
ResultSet rs=st.executeQuery(str); 由于SQL语句是select,用executeQuery()方法,返回一个结果集保存在ResultSet对象rs中。
4、分析ResultSet对象
① 执行完毕SQL语句后,将返回一个ResultSet类的对象,它包含所有的查询结果。但对ResultSet类的对象方式依赖于光标(Cursor)的 类型,而对每一行中的各个列,可以按任何顺序进行处理(当然,如果按从左到右的顺序对各列进行处理可以获得较高的执行效率);
ResultSet类中的Course方式主要有:
ResultSet.TYPE_FORWARD_ONLY(为缺省设置):光标只能前进不能后退,也就是只能从第一个一直移动到最后一个。
ResultSet.TYPE_SCROLL_SENSITIVE:允许光标前进或后退并感应到其它ResultSet的光标的移动情形。
ResultSet.TYPE_SCROLL_INSENSITIVE:允许光标前进或后退并不能感应到其它ResultSet的光标的移动情形。
ResultSet类中的数据是否允许修改主要有:
ResultSet.CONCUR_READ_ONLY(为缺省设置):表示数据只能只读,不能更改。
ResultSet.CONCUR_UPDATABLE:表示数据允许被修改。
可以在创建Statement或PreparedStatement对象时指定ResultSet的这两个特性。
Statement stmt=con.createStatement(ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_READ_ONLY);

PreparedStatement pstmt=con.PrepareStatement("insert into bookTable values (?,?,?)",ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
② ResultSet类的对象维持一个指向当前行的指针,利用ResultSet类的next()方法可以移动到下一行(在JDBC中,Java程序一次只 能看到一行数据),如果next()的返回值为false,则说明已到记录集的尾部。另外JDBC也没有类似ODBC 的书签功能的方法。
③ 利用ResultSet类的getXXX()方法可以获得某一列的结果,其中XXX代表JDBC中的Java数据类型,如 getInt()、getString()、getDate()等。访问时需要指定要检索的列(可以采用 int值作为列号(从1开始计数)或指定列(字段)名方式,但字段名不区别字母的大小写)。
示例:
while(rs.next()){
int id=rs.getInt("id");
String name=rs.getString("cName");
int age=rs.getInt("cAge");
String address=rs.getString("cAddress");
String email=rs.getString("cEmail");
System.out.println(id+" "+name+" "+age+" "+address+" "+email);
}
获得结果集中的结构信息:利用ResultSet类的getMetaData()方法来获得结果集中的一些结构信息(主要提供用来描述列的数量、列的名称、列的数据类型。利用ResulSetMetaData类中的方法)。
ResultsetMetaData  rsmd=rs.getMetaData();
rsmd.getColumnCount();   //返回结果集中的列数
rsmd.getColumnLabel(1); //返回第一列的列名(字段名)
例如:
Statement stmt=con.createStatement();
ResultSet rs=stmt.executeQuery("select * from TableName");
for(int i=1; i<=rs.getMetaData().getColumnCount(); i++) //跟踪显示各个列的名称
{ System.out.print(rs. getColumnName (i)+"\t");
}
while(rs.next())
{ //跟踪显示各个列的值
for(int j=1; j<=rs.getMetaData().getColumnCount(); j++)
{ System.out.print(rs.getObject(j)+"\t");
}
}
5、关闭连接
(注意关闭的顺序) 例:
rs.close();
st.close();
con.close()
6、JDBC的常用API
一、Connection接口:
       1.createStatement():创建数据库连接
       2.prepareStatement(Stringsql):创建预处理语句
       3.prepareCall(Stringsql):创建可调用语句
       4.getAutoCommit():获取自动提交的模式
       5.setAutoCommit():设置自动提交的模式
       6.commit():提交所执行的SQL语句
       7.rollback():回滚所执行的SQL语句
       8.getMetaData():获取一个DatabaseMetaData对象,该对象包含了有关数据库的基本信息
       9.close():关闭数据库连接
      10.isClose():判断数据库连接是否超时或被显示关闭
二、Statement接口:
       1.execute(Stringsql):执行SQL语句,如果返回值是结果集则为true,否则为false
       2.executeQuery(Stringsql):执行SQL语句,返回值为ResultSet
       3.executeUpdate(Stringsql):执行SQL语句,返回值为所影响的行数
       4.addBatch(Stringsql):向当前Statement对象的命令列表中添加新的批处理SQL语句
       5.clearBatch():清空当前Statement对象的命令列表
       6.executeBatch():执行当前Statement对象的批处理语句,返回值为每个语句所影响的函数数组
       7.getConnection():返回创建了该Statement对象的Connection对象
       8.getQueryTimeout():获取等待处理结果的时间
       9.setQueryTimeout():设置等待处理结果的时间
三、ResultSet接口:
       1.first()/beforeFirst():将游标移动到ResultSet中第一条记录(的前面)
       2.last()/afterLast():将游标移动到ResultSet中最后一条记录(的后面)
       3.absolute(intcolumn):将游标移动到相对于第一行的指定行,负数则为相对于最后一条记录
       4.relative(introws):将游标移动到相对于当前行的第几行,正为向下,负为向上
       5.next():将游标下移一行
       6.previous():将游标上移一行
       7.insertRow():向当前ResultSet和数据库中被插入行处插入一条记录
       8.deleteRow():将当前ResultSet中的当前行和数据库中对应的记录删除
       9.updateRow():用当前ResultSet中已更新的记录更新数据库中对应的记录
       10.cancelUpdate():取消当前对ResultSet和数据库中所做的操作
       11.findColumn(StringcolumnName):返回当前ResultSet中与指定列名对应的索引
       12.getRow():返回ResultSet中的当前行号
       13.refreshRow():更新当前ResultSet中的所有记录
       14.getMetaData():返回描述ResultSet的ResultSetMetaData对象
       15.isAfterLast():是否到了结尾
       16.isBeforeFirst(): 是否到了开头
       17.isFirst():是否第一条记录
       18.isLast(): 是否最后一条记录
       19.wasNull():检查列值是否为NULL值,如果列的类型为基本类型,且数据库中的值为0,那么
这项检查就很重要。由于数据库NULL也返回0,所以0值和数据库的NULL不能区分。如果列的类型为对象,可以简单地将返回值与null比较
        20.close():关闭当前ResultSet
四、ResultSetMetaData接口:
       1.getColumnCount():返回ResultSet中列的数目
       2.getColumnName():返回列在数据库中的名称
       3.getColumnType():返回列的SQL类型
       4.isReadOnly():表示该数据项是否为只读值
       5.isNullable():表示该列是否可以存储NULL

示例:

import java.sql.*;

public class JDBCTest {

public static void main(String[] args){

           // 驱动程序名
           String driver = "com.mysql.jdbc.Driver";

           // URL指向要访问的数据库名scutcs
           String url = "jdbc:mysql://127.0.0.1:3306/test";

           // MySQL配置时的用户名
           String user = "root";
 
           // MySQL配置时的密码
           String password = "123456";

           try {
            // 加载驱动程序
            Class.forName(driver);

            // 连续数据库
            Connection conn = DriverManager.getConnection(url, user, password);

            if(!conn.isClosed())
             System.out.println("Succeeded connecting to the Database!");

            // statement用来执行SQL语句
            Statement statement = conn.createStatement();

            // 要执行的SQL语句
            String sql = "select * from pet";

            // 结果集
            ResultSet rs = statement.executeQuery(sql);

            System.out.println("-----------------");
           

            String name = null;

            while(rs.next()) {
   
             // 选择sname这列数据
             name = rs.getString("name");
   
             // 首先使用ISO-8859-1字符集将name解码为字节序列并将结果存储新的字节数组中。
             // 然后使用GB2312字符集解码指定的字节数组
             name = new String(name.getBytes("ISO-8859-1"),"GB2312");

             // 输出结果
             System.out.println(rs.getString("ID") + "\t" + name);
            }

            rs.close();
            conn.close();

           } catch(ClassNotFoundException e) {


            System.out.println("Sorry,can`t find the Driver!");
            e.printStackTrace();


           } catch(SQLException e) {


            e.printStackTrace();


           } catch(Exception e) {


            e.printStackTrace();


           }
}
}
pieryon
推荐于2017-10-03 · 知道合伙人数码行家
pieryon
知道合伙人数码行家
采纳数:14410 获赞数:166869
获取软件设计师高级职称 万达金融最佳创新奖

向TA提问 私信TA
展开全部
可以用jdbc来连接数据库,完整代码如下:
package com.jdbc.test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class JDBCTest {
public static void main(String[] args) throws Exception {
//1.加载驱动
//Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
//Class.forName("com.mysql.jdbc.Driver");
Class.forName("oracle.jdbc.driver.OracleDriver");

//2.创建数据库连接对象
//Connection conn = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databaseName=db","sa","sqlpass");
//Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db?useUnicode=true&characterEncoding=UTF-8","root","123456");
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl","scott","Oracle123");

//3.创建数据库命令执行对象
Statement stmt = conn.createStatement();
// PreparedStatement ps = conn.prepareStatement("select * from t_user");

//4.执行数据库命令
ResultSet rs = stmt.executeQuery("select * from t_user");
// ResultSet rs = ps.executeQuery();

//5.处理执行结果
while (rs.next()) {
int id = rs.getInt("id");
String username = rs.getString("username");
String password = rs.getString("password");
System.out.println(id + "\t" + username + "\t" + password);
}

//6.释放数据库资源
if (rs != null) {
rs.close();
}
// if (ps != null) {
// ps.close();
// }
if (stmt != null) {
stmt.close();
}
if (conn != null) {
conn.close();
}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ruanbanyong1
2014-11-18 · 超过11用户采纳过TA的回答
知道答主
回答量:35
采纳率:0%
帮助的人:9.7万
展开全部
给你例子你吧!连oracle和mysl的,不懂可以追问。
package com.midea.dms.util;

import java.sql.*;

public class DBUtil {

/**
* 本地数据库数据导入测试
*/
/*public static final String DBDriver="com.mysql.jdbc.Driver";
public static final String DBUrl="jdbc:mysql://localhost:3306/test";
public static final String DBUsername="root";
public static final String DBPassword="";*/

//oracle

public static final String DBDriver="oracle.jdbc.driver.OracleDriver";
public static final String DBUrl="jdbc:oracle:thin:@10.16.66.234:1603:test";
public static final String DBUsername="stage";
public static final String DBPassword="stage66132";

public static Connection conn=null;
public static Statement stem=null;
public static PreparedStatement pstem=null;
public static ResultSet rs=null;

/**
* 获得 connection
* @return
*/
public Connection getConnection(){

try{

Class.forName(DBDriver);
conn=DriverManager.getConnection(DBUrl,DBUsername,DBPassword);

}catch(Exception e){
e.printStackTrace();
}

return conn;
}

/**
* 数据库操作Statement
* @param con
* @return
*/
public static Statement getStatement(Connection con){

if(con!=null){
try {
stem=con.createStatement();

} catch (SQLException e) {

e.printStackTrace();
}
}

return stem;
}

/**
* 数据库操作PreparedStatement
* @param con
* @param sql
* @return
*/

public static PreparedStatement getPreparedStatement(Connection con,String sql){

if(con!=null){
try {
pstem=con.prepareStatement(sql);
} catch (SQLException e) {

e.printStackTrace();
}
}

return pstem;
}

/**
*
* 操作结果集
* @param conn
* @param sql
* @return
*/
public ResultSet getResultSet(Connection conn,String sql){

pstem= DBUtil.getPreparedStatement(conn, sql);
try {
rs = pstem.executeQuery();
} catch (SQLException e) {

e.printStackTrace();
}
return rs;
}

/**
*
* 关闭数据库连接
* @param
*/
public void close(Connection conn){
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}

}

public void close(Statement stem){
if(stem!=null){
try {
stem.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}

public void close(PreparedStatement pstem){
if(pstem!=null){
try {
pstem.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}

public void close(ResultSet rs){
if(rs!=null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}

/**
* 主函数 测试方法
* @param args
*/
public static void main(String[] args) {

DBUtil db=new DBUtil();
System.out.print("conn="+db.getConnection());

}

//create getter and setter
public static String getDbdriver() {
return DBDriver;
}

public static String getDburl() {
return DBUrl;
}

public static String getDbusername() {
return DBUsername;
}

public static String getDbpassword() {
return DBPassword;
}

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ant_szc
推荐于2017-09-24 · TA获得超过342个赞
知道小有建树答主
回答量:346
采纳率:0%
帮助的人:237万
展开全部
public static void main(String arg[]) {
try {
Connection con = null; //定义一个MYSQL链接对象
Class.forName("com.mysql.jdbc.Driver").newInstance(); //MYSQL驱动
con = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test", "root", "root"); //链接本地MYSQL
System.out.print("yes");
} catch (Exception e) {
System.out.print("MYSQL ERROR:" + e.getMessage());
}

}
更多追问追答
追问
con = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test", "root", "root"); //链接本地MYSQL

这个地址在哪里看??
追答
这是一个标准的mysql连接,一般都是
jdbc:mysql://ip:port/数据库名
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fanqiezz11
2014-11-18 · TA获得超过777个赞
知道小有建树答主
回答量:369
采纳率:0%
帮助的人:256万
展开全部
public void dbconnection(){
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver") ;
String url="jdbc:microsoftqlserver://localhost:1433;DatabaseName=数据库名";
Connection conn = DriverManager.getConnection(url,数据库用户名,密码);
Statement stmtNew = conn.createStatement();
}catch(Exception e){
e.printStackTrace();
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式