java连接数据库的代码

java连接数据库的代码,第1张

用这个类吧.好的话,给我加加分.

import java.sql.*

/**

* @功能: 一个JDBC的本地化API连接类,封装了数据 *** 作方法,只用传一个SQL语句即可

* @作者: 李开欢

* @日期: 2007/

*/

public class ConnectionDemo {

/*

* 这里可以将常量全部放入另一个类中,以方便修改

*/

private static Connection conn

private static Statement ps

private static ResultSet rs

private static final String DRIVER = "com.microsoft.jdbc.sqlserver.SQLServerDriver"

private static final String URL = "jdbc:microsoft:sqlserver://localhost:1433DatabaseName=mydb"

private static final String USER ="sa"

private static final String PASS = "sa"

public ConnectionDemo() {

// TODO Auto-generated constructor stub

ConnectionDemo.getConnection()

}

public static Connection getConnection(){

System.out.println("连接中...")

try {

Class.forName(ConnectionDemo.DRIVER)

conn = DriverManager.getConnection(ConnectionDemo.URL, ConnectionDemo.USER, ConnectionDemo.PASS)

System.out.println("成功连接")

} catch (ClassNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace()

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace()

}

return conn

}

public static Statement getStatement(String sql){

System.out.println("执行SQL语句中...")

try {

ps = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE)

if(sql.substring(0, 6).equals("select")){

rs = ps.executeQuery(sql)

System.out.println("执行完查询 *** 作,结果已返回ResultSet集合")

}else if(sql.substring(0, 6).equals("delete")){

ps.executeUpdate(sql)

System.out.println("已执行完毕删除 *** 作")

}else if(sql.substring(0, 6).equals("insert")){

ps.executeUpdate(sql)

System.out.println("已执行完毕增加 *** 作")

}else{

ps.executeUpdate(sql)

System.out.println("已执行完毕更新 *** 作")

}

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace()

}

return ps

}

public static ResultSet getResultSet(){

System.out.println("查询结果为:")

return rs

}

public static void closeConnection(){

System.out.println("关闭连接中...")

try {

if (rs != null) {

rs.close()

System.out.println("已关闭ResultSet")

}

if (ps != null) {

ps.close()

System.out.println("已关闭Statement")

}

if (conn != null) {

conn.close()

System.out.println("已关闭Connection")

}

} catch (Exception e) {

// TODO: handle exception

}

}

public static void main(String[] args) {

// TODO Auto-generated method stub

ConnectionDemo.getConnection()

String sql = "delete from type where id = 1"

ConnectionDemo.getStatement(sql)

String sql2 = "insert into type values(1,'教学设备')"

ConnectionDemo.getStatement(sql2)

String sql1 = "select * from type"

ConnectionDemo.getStatement(sql1)

ResultSet rs = ConnectionDemo.getResultSet()

System.out.println("编号 "+"类型")

try {

while(rs.next()){

System.out.print(" "+rs.getInt(1)+" ")

System.out.println(rs.getString(2))

}

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace()

}

ConnectionDemo.closeConnection()

}

}

第一步:创建一个查询过程,因为在登录时要根据用户名查询用户密码

此步要用到pl/sql编程知识,代码如下:

create or replace procedure sel_user(uname in varchar2,pass out varchar2) is

begin

select users.password into pass from users where users.username=uname and rownum = 1

end

第二步:编写登录页面(login.java)(采用纯java+servlet编写)

//login.java如下

package cn.hnu

import java.io.IOException

import java.io.PrintWriter

import javax.servlet.ServletException

import javax.servlet.http.HttpServlet

import javax.servlet.http.HttpServletRequest

import javax.servlet.http.HttpServletResponse

public class testhtml extends HttpServlet {

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

resp.setContentType("text/htmlcharset=gbk")

try {

PrintWriter pw = resp.getWriter()

pw.println("<html>")

pw.println("<head>")

pw.println("<title>")

pw.println("用户登录")

pw.println("</title>")

pw.println("</head>")

pw.println("<body>")

pw.println("<h1>用户登录</h1>")

pw.println("<hr>")

pw.println("<form method=post action=loginCl>")

pw.println("用户名:<input type=text name=userName><br>")

pw.println("密&nbsp&nbsp码:<input type=password name=password><br>")

pw.println("<input type=submit value=登录>")

pw.println("<input type=reset value=重置>")

pw.println("</form>")

pw.println("</body>")

pw.println("</html>")

} catch (Exception e) {

e.printStackTrace()

// TODO: handle exception

}

}

@Override

protected void doPost(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

// TODO Auto-generated method stub

this.doGet(req, resp)

}

}

第三步:编程成功登录页面(wel.java) //wel.java如下,它主要用于用户正常登录后显示信息给用户

package cn.hnu

import java.io.IOException

import java.io.PrintWriter

import javax.servlet.ServletException

import javax.servlet.http.HttpServlet

import javax.servlet.http.HttpServletRequest

import javax.servlet.http.HttpServletResponse

import javax.servlet.http.HttpSession

public class Wel extends HttpServlet {

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

// TODO Auto-generated method stub

//防止用户非法登录

HttpSession hs = req.getSession()

String s = (String)hs.getAttribute("pass")

if(s == null){

resp.sendRedirect("login")

}

PrintWriter pw = resp.getWriter()

pw.write("welcome,hello")

}

@Override

protected void doPost(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

// TODO Auto-generated method stub

this.doGet(req, resp)

}

}

第四步:编写login处理页面(loginCl.java)

package cn.hnu

import java.io.IOException

import java.sql.*

import javax.servlet.ServletException

import javax.servlet.http.HttpServlet

import javax.servlet.http.HttpServletRequest

import javax.servlet.http.HttpServletResponse

import javax.servlet.http.HttpSession

public class loginCl extends HttpServlet {

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

// TODO Auto-generated method stub

String u = req.getParameter("userName")

String p = req.getParameter("password")

//查询数据库

String pa=null

Connection ct = null

CallableStatement cs = null

try {

Class.forName("oracle.jdbc.driver.OracleDriver")

ct = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:oracle",

"scott", "tiger")

cs = ct.prepareCall("{call sel_user(?,?)}")

cs.setString(1, u)

cs.registerOutParameter(2, oracle.jdbc.OracleTypes.VARCHAR)

cs.execute()

pa = cs.getString(2)

System.out.println("u=" + u + " p=" + pa)

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace()

} finally {

try {

if (cs != null) {

cs.close()

}

if (ct != null) {

ct.close()

}

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace()

}

}

//验证用户信息是否合法

if (p.equals(pa)) {

HttpSession hs = req.getSession(true)//防止用户非法登录

hs.setAttribute("pass", "OK")

resp.sendRedirect("wel")

} else {

resp.sendRedirect("login")

}

}

@Override

protected void doPost(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

// TODO Auto-generated method stub

this.doGet(req, resp)

}

}

亲,sql可以换成MySQL

这个没关系的,别的都可以照搬来用

import java.sql.*

import javax.swing.*

import java.awt.*

import java.awt.event.*

import java.util.*

public class inensshow extends JFrame {

private Connection connection

private Statement statement

private ResultSet resultSet

private ResultSetMetaData rsMetaData

//GUI变量定义

private JTable table

private JTextArea inputQuery

private JButton submitQuery

public inensshow()

{

//Form的标题

super( "输入SQL语句,按查询按钮查看结果。" )

String url = "jdbc:mysql://localhost:3306/web"

String username = "inens"

String password = "inens"

//加载驱动程序连接数据库

try {

Class.forName( "org.gjt.mm.mysql.Driver" )

connection = DriverManager.getConnection(

url, username, password )

}

//捕获加载驱动程序异常

catch ( ClassNotFoundException cnfex ) {

System.err.println(

"装载 JDBC/ODBC 驱动程序失败。" )

cnfex.printStackTrace()

System.exit( 1 )// terminate program

}

//捕获连接数据库异常

catch ( SQLException sqlex ) {

System.err.println( "无法连接数据库" )

sqlex.printStackTrace()

System.exit( 1 )// terminate program

}

//如果数据库连接成功,则建立GUI

//SQL语句

String test="SELECT * FROM data"

inputQuery = new JTextArea( test, 4, 30 )

submitQuery = new JButton( "查询" )

//Button事件

submitQuery.addActionListener(

new ActionListener() {

public void actionPerformed( ActionEvent e )

{

getTable()

}

}

)

JPanel topPanel = new JPanel()

topPanel.setLayout( new BorderLayout() )

//将"输入查询"编辑框布置到 "CENTER"

topPanel.add( new JScrollPane( inputQuery), BorderLayout.CENTER )

//将"提交查询"按钮布置到 "SOUTH"

topPanel.add( submitQuery, BorderLayout.SOUTH )

table = new JTable()

Container c = getContentPane()

c.setLayout( new BorderLayout() )

//将"topPanel"编辑框布置到 "NORTH"

c.add( topPanel, BorderLayout.NORTH )

//将"table"编辑框布置到 "CENTER"

c.add( table, BorderLayout.CENTER )

getTable()

setSize( 500, 300 )

//显示Form

show()

}

private void getTable()

{

try {

//执行SQL语句

String query = inputQuery.getText()

statement = connection.createStatement()

resultSet = statement.executeQuery( query )

//在表格中显示查询结果

displayResultSet( resultSet )

}

catch ( SQLException sqlex ) {

sqlex.printStackTrace()

}

}

private void displayResultSet( ResultSet rs )

throws SQLException

{

//定位到达第一条记录

boolean moreRecords = rs.next()

//如果没有记录,则提示一条消息

if ( ! moreRecords ) {

JOptionPane.showMessageDialog( this,

"结果集中无记录" )

setTitle( "无记录显示" )

return

}

Vector columnHeads = new Vector()

Vector rows = new Vector()

try {

//获取字段的名称

ResultSetMetaData rsmd = rs.getMetaData()

for ( int i = 1i <= rsmd.getColumnCount()++i )

columnHeads.addElement( rsmd.getColumnName( i ) )

//获取记录集

do {

rows.addElement( getNextRow( rs, rsmd ) )

} while ( rs.next() )

//在表格中显示查询结果

table = new JTable( rows, columnHeads )

JScrollPane scroller = new JScrollPane( table )

Container c = getContentPane()

c.remove(1)

c.add( scroller, BorderLayout.CENTER )

//刷新Table

c.validate()

}

catch ( SQLException sqlex ) {

sqlex.printStackTrace()

}

}

private Vector getNextRow( ResultSet rs,

ResultSetMetaData rsmd )

throws SQLException

{

Vector currentRow = new Vector()

for ( int i = 1i <= rsmd.getColumnCount()++i )

currentRow.addElement( rs.getString( i ) )

//返回一条记录

return currentRow

}

public void shutDown()

{

try {

//断开数据库连接

connection.close()

}

catch ( SQLException sqlex ) {

System.err.println( "Unable to disconnect" )

sqlex.printStackTrace()

}

}

public static void main( String args[] )

{

final inensshow app =

new inensshow()

app.addWindowListener(

new WindowAdapter() {

public void windowClosing( WindowEvent e )

{

app.shutDown()

System.exit( 0 )

}

}

)

}

}

------------------------------------------------------------

这次在WIN98中就不好使了。因为Mysql的驱动程序没有也没能加入到CLASSPATH 当中,但是JSP却可以使用(JSP的98驱动加载详见Jsp与Mysql连接查错文章),所以这次我是在XPServer中测试的。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/6677545.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-03-26
下一篇2023-03-26

发表评论

登录后才能评论

评论列表(0条)

    保存