《互联网程序设计(Java)》——课程笔记13:基于Java的网络数据库程序设计

版权声明: https://blog.csdn.net/bensonrachel/article/details/84836616

网络数据库程序设计就是利用网络共享(或操作)远程服务器数据库中的数据,从而实现基于网络数据库的互联网络应用。

数据库一般位于异地的服务器上,客户端应用程序用JAVA语言书写。数据库和JAVA开发环境的关系如图1所示。

 

图1 JAVA与数据库

Java语言要操作数据库,其中间需要“JDBC API”和“JDBC实现”2个必须的中间件。

 

(1) “JDBC API”提供3个常见的类:

l  连接类,Connection

l  执行类,Statement

l  结果类,ResultSet

(2) “JDBC实现”提供2个接口:

l  驱动管理接口,DriverManager

l  驱动接口,Driver

提前工作:

下载com.mysql.jdbc_5.1.5包,并将包添加到项目库中。

程序设计第一步:程序操作数据库

(1)建议程序包名:database,程序命名为:DBOperate1.java,主要功能是在数据库插入一些记录,并实现浏览数据库。

(2)程序DBOperate1.java要点包括:

(2.1)第一步 运用JDBC实现,为程序加载SQL数据库驱动:

    //加载MySQL驱动器,其中com.mysql.jdbc.Driver包含在com.mysql.jdbc_5.1.5.jar中。

   Class jdbcDriver=Class.forName("com.mysql.jdbc.Driver");

    //注册MySQL驱动器

   java.sql.DriverManager.registerDriver((Driver)jdbcDriver.newInstance());

第二步使用JDBC API取得数据库联接权和执行权,并进行数据库相关操作:

指定数据库所在位置:
dbUrl ="jdbc:mysql://IP:3306/STUDENTDB";
//注意:其中的IP地址和端口先用自己机器的参数代替。
 
给出允许访问数据库的用户名和密码:
dbUser=“******”;
dbPwd=“******”;
 
创建数据库连接对象:
Connectio con = java.sql.DriverManager.getConnection(dbUrl,dbUser,dbPwd);
创建数据库执行对象:
Statement stmt = con.createStatement();

中文乱码问题:

 

从源头上解决这个问题。那就是修改mysql默认的配置文件,把它的字符集修改成能够使用中文字符的UTF8OK.

修改mysql配置文件my.cnf  my.ini

[mysqld]

character-set-server=utf8

[client]

default-character-set=utf8

[mysql]

default-character-set=utf8

请注意这几个参数配置的位置,不然可能会启动不起来mysql服务:

my.ini在programData (隐藏的)下的MYSQL下

 

改后会发现数据插不进去:

这里有老师提供的方法:

具体代码:


package Chapter11_1;

import com.mysql.jdbc.Field;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.Driver;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;

public class DBTest {
    public static void main(String args[])
        throws SQLException, ClassNotFoundException 
    {
        Connection con = null;
        try
        {
            // Load the JDBC driver
            Class jdbcDriver = Class.forName("com.mysql.jdbc.Driver");
            System.out.println("Driver loaded");
        
            //注册MYSQL驱动器
            java.sql.DriverManager.registerDriver((Driver)jdbcDriver.newInstance());  
            
            String dbUrl = "jdbc:mysql://202.116.195.22:9999/STUDENTDB1";//?useUnicode=true&characterEncoding=GB2312";
            String dbUser = "";
            String dbPwd = "";
            
          
           
            con = java.sql.DriverManager.getConnection(dbUrl,dbUser,dbPwd);
            System.out.println("连接数据库成功");
            
            
            
            //探测数据库中的表名
            DatabaseMetaData dbMetaData = con.getMetaData();

            ResultSet rsTables = dbMetaData.getTables(null, null, null,
                    new String[] {"TABLE"});
            System.out.print("User tables: ");
            while (rsTables.next())
            {
                System.out.print(rsTables.getString("TABLE_NAME") + " ");
            }
            System.out.println();
            
           
            
            
            
            //创建数据库执行对象
            Statement stmt = con.createStatement();
            
            ResultSet rs = stmt.executeQuery("select * from students");
            ResultSetMetaData fields = rs.getMetaData();//会返回该表的字段信息
            int n = fields.getColumnCount();
            System.out.println("n is: " + n);
            for(int i=1;i<=n;i++)
            {
                System.out.print("   " + fields.getColumnLabel(i));
            }
            System.out.println();
            
            
            
      
        String sql = "insert into STUDENTS(NO,NAME,AGE,CLASS,IP)"
                 + " values('20180000121','李四',23, 'network engineering','172.16.230.25')";
        //  String sql = "delete from Students";  
         stmt.execute(sql);
         //  stmt.execute(sql);
            
            
            rs = stmt.executeQuery("select NO,NAME,AGE,CLASS from STUDENTS");
            while(rs.next())
            {
                String ssName = rs.getString(2);
                System.out.println(ssName);
            }
            
            
            
       
            con.close();
        }catch(Exception e)
        {
            e.printStackTrace();
        }finally
        {
            if((con!=null) && (!con.isClosed()))
            {
                con.close();
            }
        }
        
        
        
    }
    
}

猜你喜欢

转载自blog.csdn.net/bensonrachel/article/details/84836616
今日推荐