java输出数据库
① java连接mysql,并随机抽取数据库中的一些记录并显示出来
packagecom.joinmysql.demo;
importjava.sql.DriverManager;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importjava.sql.Connection;
importjava.sql.Statement;
publicclassMysqlDemo{
publicstaticvoidmain(String[]args)throwsException{
Connectionconn=null;
Stringsql;
//MySQL的JDBCURL编写方式:jdbc:mysql://主机名称:连接端口/数据库的名称?参数=值
//避免中文乱码要指定useUnicode和characterEncoding
//执行数据库操作之前要在数据库管理系统上创建一个数据库,名字自己定,
//下面语句之前就要先创建javademo数据库
Stringurl="jdbc:mysql://localhost:3306/test?user=root&password=jiangwei&useUnicode=true&characterEncoding=UTF8";
try{
//之所以要使用下面这条语句,是因为要使用MySQL的驱动,所以我们要把它驱动起来,
//可以通过Class.forName把它加载进去,也可以通过初始化来驱动起来,下面三种形式都可以
Class.forName("com.mysql.jdbc.Driver");//动态加载mysql驱动
//or:
逗渗//com.mysql.jdbc.Driverdriver=newcom.mysql.jdbc.Driver();
//or:
//newcom.mysql.jdbc.Driver();
System.out.println("成功加载MySQL驱动程序");
//一个Connection代表一个数据库连接
conn=DriverManager.getConnection(url);
//Statement里面带有很多方法,比如executeUpdate可以实旁郑现插入,更新和删除等
Statementstmt=conn.createStatement();
sql="createtablestudent(NOchar(20),namevarchar(20),primarykey(NO))";
intresult=stmt.executeUpdate(sql);//executeUpdate语句会返回一个受影响的行数,如果返回-1就没有成功
if(result!=-1){
System.out.println("创建数据表成功");
sql="insertintostudent(NO,name)values('2012001','陶伟基')";
result=stmt.executeUpdate(sql);
sql="insertintostudent(NO,name)values('2012002','周小俊')";
result=stmt.executeUpdate(sql);
sql="select*fromstudent";
ResultSetrs=stmt.executeQuery(sql);//executeQuery会返回结果的集合,否则返回空值
System.out.println("学号 姓名");
while(rs.next()){
System.out.println(rs.getString(1)+" "+rs.getString(2));//入如果返回的是int类型可以用getInt()
}
}
}catch(SQLExceptione){
System.out.println("MySQL操作错误");
运指颂e.printStackTrace();
}catch(Exceptione){
e.printStackTrace();
}finally{
conn.close();
}
}
}
② 怎样用java代码把数据导入到数据库中
要使用Java代码将数据导入到数据库中,首先需要从文件读取数据。例如,从名为"123.txt"的文件中读取数据。这里使用BufferedReader来读取文件内容,逐行读取并处理。具体代码如下:
BufferedReader input; try { String s = new String(); input = new BufferedReader(new FileReader("f:\\123.txt")); while ((s = input.readLine()) != null) { // 判断是否读到了最后一行 String info[] = s.split(" "); System.out.println( info[0] + " " + info[1] + " " + info[2] ); } input.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }
接下来,将从文件中读取到的每一行数据解析为一个字符串数组,并输出前三个元素。这里,我们假设每行数据由空格分隔,且每行至少包含三个元素。现在,需要将这三个值放在一个插入语句中,以将数据插入到数据库中。
示例代码如下:
String sql = "INSERT INTO table_name (column1, column2, column3) VALUES ('" + info[0] + "', '" + info[1] + "', '" + info[2] + "')"; Statement stmt = conn.createStatement(); stmt.executeUpdate(sql);
在上述代码中,首先构建一个插入语句,其中包含从文件读取到的三个值。然后,创建一个Statement对象,并使用executeUpdate方法执行插入操作。
值得注意的是,在实际应用中,直接将用户输入的数据拼接到SQL语句中可能会导致SQL注入攻击。为了防止这种攻击,应该使用预编译语句(PreparedStatement)来处理这种情况。预编译语句可以将SQL语句和参数分开,从而提高安全性。
示例代码如下:
String sql = "INSERT INTO table_name (column1, column2, column3) VALUES (?, ?, ?)"; PreparedStatement pstmt = conn.prepareStatement(sql); pstmt.setString(1, info[0]); pstmt.setString(2, info[1]); pstmt.setString(3, info[2]); pstmt.executeUpdate();
最后,记得关闭资源,释放内存。例如,关闭BufferedReader和Statement对象。
BufferedReader input; try { String s = new String(); input = new BufferedReader(new FileReader("f:\\123.txt")); while ((s = input.readLine()) != null) { // 判断是否读到了最后一行 String info[] = s.split(" "); // 构建插入语句 String sql = "INSERT INTO table_name (column1, column2, column3) VALUES (?, ?, ?)"; PreparedStatement pstmt = conn.prepareStatement(sql); pstmt.setString(1, info[0]); pstmt.setString(2, info[1]); pstmt.setString(3, info[2]); pstmt.executeUpdate(); } input.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }
经过测试,这段代码可以成功地将数据从文件导入到数据库中。