Connection conn = 鏈接
網(wǎng)站建設哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁設計、網(wǎng)站建設、微信開發(fā)、小程序開發(fā)、集團企業(yè)網(wǎng)站建設等服務項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了南雄免費建站歡迎大家使用!
Statement stmt = conn.createStatementI();
String sql = "CREATE TABLE PFO_ANALYSE_BRANCH ( "
+" NODE_NAME_S VARCHAR2(50 BYTE), "
+ 其他字段
+")";
stmt.execute(sql)
姑且當樓主的程序用的是JDBC連接數(shù)據(jù)庫吧(不貼代碼讓人猜是真不好回答?。?,樓主全文搜索
"DBManager.getConnection",就會找到下面這樣的一句話:
DBManager.getConnection("....................");
打點的部分也可能是參數(shù)寫的,反正就是找到了這么句話吧,重點就是這個打點的地方,參數(shù)的話,請看參數(shù)內容,內容大致如下:
jdbc:[某種數(shù)據(jù)庫]://[IP地址]:[端口號]/[庫名]?user=[賬戶]password=[密碼]
舉個mysql的例子:
jdbc:mysql://localhost:3306/test?user=rootpassword=root
這樣你就你的代碼是連接的什么數(shù)據(jù)庫了,樓主期待代碼是SQL Server數(shù)據(jù)庫吧,呵呵。
如果不是,那你就決定是自己裝一個,還是改造代碼啦?當然你還要根據(jù)別人代碼去創(chuàng)建數(shù)據(jù)庫。
給個SQL Server的例子
//加載JDBC驅動
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
//建立數(shù)據(jù)庫連接,取得Connection對象
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs";
String user="sa";
String password="";
Connection conn=DriverManager.getConnection(url,user,password);
//后面就可以寫操作數(shù)據(jù)庫的代碼了
數(shù)據(jù)庫的話你可以寫一個觸發(fā)器,
java代碼的話:spring的schdules和quartz設置定時任務
你這段程序錯誤太多了
1)
public class test() throws SQLException
test是類,不是方法,不要用(),不能拋出異常
改為
public class test
2)sql ="select name,password from operator;";
sql變量沒有聲明,改為
String sql ="select name,password from operator;";
3) main方法是靜態(tài)方法,里面不能使用conn等非靜態(tài)變量。
改為新定義一個方法,
然后再main中創(chuàng)建一個test對象,在調用該方法
4)因為除了SQLException,語句Class.forName(driver);還會拋出其它異常,所以在方法直接使用catch處理所有的異常。
修改后
import java.sql.*;
public class test
{
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
String driver ="com.microsoft.jdbc.sqlserver.SQLServerDriver";
String url ="jdbc:microsoft.sqlserver://localhost:1433;DatabaseName=Restaurant";
String user ="user";
String pwd ="user";
String sql ="select name,password from operator;";
public void doTest() {
try{
Class.forName(driver);
System.out.println("加載驅動成功!");
conn = DriverManager.getConnection(url,user,pwd);
System.out.println("連接數(shù)據(jù)庫成功!");
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
while(rs.next())
{
System.out.println("------記錄-------");
System.out.println("姓 名: "+rs.getString("name"));
System.out.println("密 碼: "+rs.getString("password"));
}
}catch(Exception e){
e.printStackTrace();
}
}
public static void main(String [] args)
{
new test().doTest();
}
}
Java 實現(xiàn)連接sql server 20002007-12-16 13:28:00.0
第一種:通過ODBC連接數(shù)據(jù)庫
JAVA語言的跨平臺的工作能力(Write Once ,Run Anywhere)、優(yōu)秀的圖像處理能力(我相信現(xiàn)在沒有那種語言可以超過JAVA在網(wǎng)絡上的圖形處理能力)、網(wǎng)絡通信功能、通過JDBC數(shù)據(jù)庫訪問技術等等,讓我們誰都不可否認JAVA語言是SUN公司對于計算機界的一個巨大的貢獻。筆者可以描述這樣一個場景:有一天你上網(wǎng)完全可以不用IE 或者NETSCAPE,上網(wǎng)就像是玩游戲,你可以獲得游戲那么精美的圖像和互動的感覺,如果你玩過UO,也許你就知道那種感覺了,但是JAVA做成的東西一定會超過UO的,因為不單單是游戲,也不是單單是瀏覽器,如果你愿意(要你有錢,有時間,有優(yōu)秀的JAVA人才)你可以把所有的這一切用Java完全集成出來?。?!我不是夸大JAVA的功能,大家可以訪問一下的那個社區(qū)程序,你就能找到一種感覺了:相信我沒有說什么假話 。好了,不說廢話了,現(xiàn)在我向你介紹JAVA的數(shù)據(jù)庫訪問技術----JDBC數(shù)據(jù)庫訪問技術(你可千萬不要搞成ODBC了喲!)。
JDBC技術事實上是一種能通過JAVA語言訪問任何結構化數(shù)據(jù)庫的應用程序接口(API)(Sun這樣說的,我也不知道是不是真的),而且現(xiàn)在的JDBC 3.0據(jù)Sun說也能訪問Execel等電子表格程序!
JDBC對于數(shù)據(jù)庫的訪問有四種方式,我們這里只是介紹兩種:
第一種是通過ODBC做為“橋”(Bridge)對數(shù)據(jù)庫訪問,第二種是直接對數(shù)據(jù)庫訪問。
我們先來看看第一種JDBC--ODBC訪問的流程:
JDBC Driver Mannager-JDBC-ODBC橋-ODBC-數(shù)據(jù)庫客戶機驅動庫-數(shù)據(jù)庫服務器-返回查詢結果,在這種訪問中值的我們注意的是雖然JAVA是"Write Once ,Run Anywhere",但是如果通過這種訪問的話,需要客戶端必須設置ODBC和有相應的數(shù)據(jù)庫客戶機的驅動,當你看了下面的另外一個流程的時候或許你會想:明明下一種更方面,為什么還要有這個東西的產生!呵呵,因為,未必所有的數(shù)據(jù)庫服務器提供商都提供下面的JDBC驅動程序(給JDBC訪問提供相應的接口),所以就有了JDBC-ODBC Bridge。
接著再讓我們來看看第二種訪問流程:
JDBC Driver Mannager-局部JDBC驅動-客戶端數(shù)據(jù)庫-數(shù)據(jù)庫服務器-返回查詢結果,這種訪問事實上是轉換JDBC調用為相應的數(shù)據(jù)庫(Oracle, Sybase, Informix, DB2, 和其他的數(shù)據(jù)庫數(shù)據(jù)庫管理系統(tǒng))的客戶端API調用(這么說,不知道大家能不能懂,說簡單點就好像ASP不是通過DSN對數(shù)據(jù)庫訪問而是通過OLEDB訪問,說道這里我還是不知道大家能不能明白我的意思。哎呀,不要扔雞蛋嘛!),這種方式的訪問需要相應的數(shù)據(jù)庫提供商提供相應的JDBC驅動程序,但是有一種好處,可以獨立于odbc用于可以隨處可Run的客戶端的瀏覽器中的Applet程序。
我們下面將給大家一個通過JDBC-ODBC橋數(shù)據(jù)庫訪問的實例,但是在看下面的事例前我想問大家一次:JDK1.3裝了嗎?數(shù)據(jù)庫驅動裝了嗎(我使用的是SQLserver)?你該沒有使用Linux吧?雖然java支持Linux,但是老兄我可沒有使用Linux喲(這同JAVA的Write Once ,Run Anywhere沒有關系),由于使用了運行于Win下面的ODBC,我建議你看看這篇東西,否則你要是有了問題,出不了結果那豈不是要怪我(不過欲加之罪,何患無吃... ...),冤枉呀!
哎呀,說了這么多的廢話,還是讓我們來看看到底JDBC的調用吧!既然我們是通過odbc訪問數(shù)據(jù)庫,所以這個odbc是跑不了的,我們先來設置你的odbc:打開你的odbc數(shù)據(jù)源-選擇系統(tǒng)dsn(Click加新的dsn-)-接下來輸入選擇數(shù)據(jù)庫類型、輸入dsn名:、選擇服務器、連接數(shù)據(jù)庫的方式、輸入數(shù)據(jù)庫的登陸用戶和密碼-測試連接,如果測試成功的話,那么你的dsn就建立好了,我的dsn名為Sqlserver.使用的是sqlserver7.0,以 “sa”登陸,密碼為空。這些東西都是后面要用道的!
好了下面讓我們來看程序代碼: (該代碼已經通過運行)
//###########################################################
//代碼開始
//###########################################################
import java.sql.*;
//加載java數(shù)據(jù)連接包,java基本所有的數(shù)據(jù)庫的調用的都在這個東西里面
public class InsertCoffees {
public static void main(String args[]) {
String url = "jdbc:odbc:sqlserver";
//取得連接的url名,注意sqlserver是dsn名
Connection con;
//實例化一個Connection對象
Statement stmt;
String query = "select * from col_link";
//選擇所有的Col_link表中的數(shù)據(jù)輸出
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
//加載jdbc-odbc橋驅動
} catch(java.lang.ClassNotFoundException e) {
System.err.print("ClassNotFoundException: ");
//加載jdbc-odbc橋錯誤
System.err.println(e.getMessage());
//其他錯誤
}
try {
con = DriverManager.getConnection(url, "sa", "");
//數(shù)據(jù)庫連接
stmt = con.createStatement();
//Create 一個聲明
stmt.executeUpdate("CREATE TABLE col_link (sitename varchar (20) NULL ,siteurl varchar (50) NULL) ");
//執(zhí)行了一個sql語句生成了一個表col_link的表
stmt.executeUpdate("insert into col_link values('ASP中華網(wǎng)','')");
stmt.executeUpdate("insert into col_link values('永遠到底有多遠','')");
//執(zhí)行一個insert into語句
stmt.executeUpdate("update col_link set siteurl='' where siteurl=''");
//執(zhí)行一個update語句,更新數(shù)據(jù)庫
ResultSet rs = stmt.executeQuery(query);
//返回一個結果集
System.out.println("Col_link表中的數(shù)據(jù)如下(原始數(shù)據(jù))");
//下面的語句使用了一個while循環(huán)打印出了col_link表中的所有的數(shù)據(jù)
System.out.println("站點名 "+" "+"站點地址");
System.out.println("---------------"+" "+"----------------");
while (rs.next()) {
String s = rs.getString("sitename");
String f = rs.getString("siteurl");
//取得數(shù)據(jù)庫中的數(shù)據(jù)
System.out.println(s + " " + f);
/*String t = rs.getString(1);
String l = rs.getString(2);
System.out.println(t + " " + l);*/
/*jdbc提供了兩種方法識別字段,一種是使用getXXX(注意這里的getXXX表示取不同類型字段的不同的方法)獲得字段名,
第二種*是通過字段索引,在這里我把第二種方法注釋了*/
/*你可以訪問這個連接獲得getxxx的用法:*/
}
stmt.close();
con.close();
//上面的語句關閉聲明和連接
} catch(SQLException ex) {
System.err.println("SQLException: " + ex.getMessage());
//顯示數(shù)據(jù)庫連接錯誤或者查詢錯誤
}
}
}
//###########################################################
//代碼結束
//###########################################################
在上面這個程序中我想你展示了如何使用JDBC-ODBC連接數(shù)據(jù)庫,使用SQL語句生成一個表,使用SELECT、INSERT 、UPDATE語句取的、插入和更新一個表中的數(shù)據(jù),如何通過字段名和字段索引訪問數(shù)據(jù)庫中的東東!我希望你能從上面的代碼真正的學習到一些東西!
發(fā)揮你的想象力,設想一下JAVA到底,比如說可以通過數(shù)據(jù)庫做一個不需要GUI(圖形用戶界面)的聊天室,呵呵,感覺起來就像在DOS環(huán)境下打字的聊天室!哈哈!
最后需要說的是筆者的調試上面程序的環(huán)境:WIN2000 , JDK1.3,MS SQLSERVER編輯軟件:EDITPLUS 2.01a(這最后的東西可不是廢話,雖然早就了一些專業(yè)的JAVA開發(fā)工具,但是筆者建議JAVA初學者使用文本軟件開發(fā)JAVA程序)
第二種:直接用jdbc訪問數(shù)據(jù)庫
(1) 該實例已經運行通過
jsp連接Sql Server7.0/2000數(shù)據(jù)庫
testsqlserver.jsp如下:
%@ page contentType="text/html;charset=gb2312"%
%@ page import="java.sql.*"%
html
body
%Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs";
//pubs為你的數(shù)據(jù)庫的
String user="sa";
String password="";
Connection conn= DriverManager.getConnection(url,user,password);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select * from test";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()) {%
您的第一個字段內容為:%=rs.getString(1);%
您的第二個字段內容為:%=rs.getString(2);%
%}%
%out.print("數(shù)據(jù)庫操作成功,恭喜你");%
%rs.close();
stmt.close();
conn.close();
%
/body
/html
(2)java訪問sqlserver服務器
第一步:安裝jdbc
點擊SQL Server for JDBC驅動程序安裝程序setup.exe(可以到微軟網(wǎng)站下載 下載)
第二步:設置系統(tǒng)變量classpath
假設SQL Server for JDBC 驅動程序安裝在d:\jdbc\,則classpath應該設置如下:
classpath:=.;…;d:\jdbc\lib; d:\jdbc\lib\mssqlserver.jar; d:\jdbc\lib\msutil.jar; d:\jdbc\lib\msbase.jar;
注意:設置時要在最前面的點號和分號
第三步:編輯java程序并且運行
實例1如下:
//import com.microsoft.*;
//注意:在java與sql server 連接時不需要這個包,其他書上說這個包是必需的,這個問題有待進一步討論
import java.sql.*;
import java.net.URL;
class insert
{
public static void main(String[] args)
{
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=northwind";
String query="select * from categories";
String query1="insert categories values(10,'Hanbao','Sweet')";
String query2="insert categories values(11,'Naicha','Coffee taste')";
try
{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
Connection con=DriverManager.getConnection(url,"sa","739555");
Statement stmt=con.createStatement();
stmt.executeUpdate(query1);
stmt.executeUpdate(query2);
stmt.close();
con.close();
}
catch(SQLException ex)
{
}
catch(java.lang.Exception ex)
{
ex.printStackTrace();
}
}
}
實例2如下:
//import com.microsoft.*;
//注意:在java與sql server 連接時不需要這個包,其他書上說這個包是必需的,這個問題有待進一步討論
import java.sql.*;
import java.net.URL;
class java2sqlserver
{
public static void main(String[] args)
{
String url="jdbc:microsoft:sqlserver://localhost:1433;User=sa;Password=739555;DatabaseName=northwind";
String query="Select * From Categories";
try
{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
//DriverManager.setLogStream(System.out);
Connection con=DriverManager.getConnection(url);
checkForWarning(con.getWarnings());
Statement stmt=con.createStatement();
ResultSet rs=stmt.executeQuery(query);
dispResultSet(rs);
rs.close();
stmt.close();
con.close();
}
catch(SQLException ex)
{
System.out.println(ex.toString()+"----SQLException caught----");
while(ex!=null)
{
System.out.print("SQLState:"+ex.getSQLState());
System.out.print("Message:"+ex.getMessage());
System.out.print("Vendor:"+ex.getErrorCode());
ex=ex.getNextException();
System.out.println("");
}
}
catch(java.lang.Exception ex)
{
ex.printStackTrace();
}
}
private static boolean checkForWarning(SQLWarning warn)
{
boolean rc=false;
if(warn!=null)
{
System.out.println("----Warning----");
rc=true;
while(warn!=null)
{
System.out.print("SQLState:"+warn.getSQLState());
System.out.print("Message:"+warn.getMessage());
System.out.print("Vendor:"+warn.getErrorCode());
System.out.println("");
warn=warn.getNextWarning();
}
}
return rc;
}
private static void dispResultSet(ResultSet rs) throws SQLException
{
int i;
ResultSetMetaData rsmd=rs.getMetaData();
int numCols=rsmd.getColumnCount();
for(i=1;i=numCols;i++)
{
if(i1) System.out.print(", ");
System.out.print(rsmd.getColumnLabel(i));
}
System.out.println("");
boolean more=rs.next();
while(more)
{
for(i=1;inumCols;i++)
{
if(i1) System.out.print(", ");
System.out.println(rs.getString(i));
}
System.out.println("");
more=rs.next();
}
}
//System.out.println("Hello World!");
}
以上兩個實例筆者已經通過運行!
import java.sql.*;
/*-
* Copyright(C) by jackliu
* 這是一個免費的代碼,如果進行修改,請保留以上信息.
* 這是一個用標準JDBC連接Oracle數(shù)據(jù)庫的包
* 編制人: Jackliu
* 開始日期: 2001.04.06
* 結束日期: 2001.04.06
* 版本: 1.0*/
public class Ora8iConnect
{
public Ora8iConnect(String db,String id,String pwd)
{ dbNAME=db;
userID=id;
userPWD=pwd;
beginConnect(); //連接數(shù)據(jù)庫
}
/*-
*返回一個Connection對象
*/
public Connection getConnection(){return conn;}
/*-
*連接數(shù)據(jù)庫,成功后返回1否則返回0
*/
public int beginConnect()
{ try
{ //加載一個Oracle驅動
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
//使用OCI8連接到數(shù)據(jù)庫
conn=DriverManager.getConnection("jdbc:oracle:oci8:@"+dbNAME,userID,userPWD);
return 1;
}
catch(SQLException e) //捕捉SQL違例
{ System.out.println("Ora8iConnect在連接oracle8數(shù)據(jù)庫時捕獲");
while (e!=null)
{ System.out.println("SQLState:"+e.getSQLState());
System.out.println("Message :"+e.getMessage());
System.out.println("Vendor :"+e.getErrorCode());
e=e.getNextException();
System.out.println(" ");
}
conn=null;
return 0;
}
}
private Connection conn; //連接對象
private String dbNAME; //實例
private String userID; //用戶名
private String userPWD; //口令
}