① java語言如何動態循環創建mysql資料庫基本表,可以實現嗎
下面是一個簡單的連接MySQL數氏孫據庫,並操作資料庫表的例子:
import java.sql.*;
public class TestMysql {
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
//載入驅動
Class.forName("com.mysql.jdbc.Driver");
//創建連接
conn = DriverManager
.getConnection("jdbc:mysql://localhost/bbs?user=用戶名&password=密碼");
stmt = conn.createStatement();
rs = stmt.executeQuery("select * from user");
while (rs.next()) {
String user = rs.getString(1);
String password = rs.getString(2);
System.out.println("用戶名:" + user + "," +" 密碼:"啟蔽 + password );
}
} catch (ClassNotFoundException ex) {
ex.printStackTrace();
} catch (SQLException ex) {
ex.printStackTrace();
} finally {
try {
if (rs != null) {
rs.close();
rs = null;
}
if (stmt != null) {
stmt.close();
stmt = null;
}
if (conn != null) {
conn.close();
conn = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
當然前提是要殲旁鏈把MySQL的連接驅動JAR文件添加到工程里
② java 怎麼動態獲取資料庫數據
你是從 servlet 跳轉到 jsp 吧,你可以在servlet查詢到 選項框里的內容List傳到jsp
然後:
<select>
<c:foreach item="${List}" var="ml">
<option value="${ml.name}">${ml.name}</option>
</c:foreach>。
③ 怎樣用java代碼動態生成資料庫表
這個就要藉助hibernate tools跟xdoclet來完成了;
首先你要在你的java代碼里應用xdoclet標簽,例如
Java code
private String name;
/**
* @hibernate.property column = "name" length = "50"
*/
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
其中,寫到javadoc上的@hibernate.property column = "name" length = "50"
就是xdoclet標簽,它需要xdoclet程序來處理,這里就需要用到hibernate tools。
具體做的話一般情況是建一個ant腳本來完成,例如:
XML code
<target name="hibernate-xdoclet" depends="init, init-xdoclet_hibernate"
description="Generate mapping documents">
<echo>+---------------------------------------------------+</echo>
<echo>| |</echo>
<echo>| R U N N I N G H I B E R N A T E D O C L E T |</echo>
<echo>| |</echo>
<echo>+---------------------------------------------------+</echo>
<delete>
<fileset dir="$" includes="hibernate.cfg.xml" />
</delete>
<echo message="hibernate.cfg.xml at $"></echo>
<sleep seconds="1"/>
<hibernatedoclet
destdir="$"
excludedtags="@version,@author,@todo,@see"
addedtags="@xdoclet-generated at $,@right The XDoclet Team,@author XDoclet,@version $"
force="false"
verbose="true">
<fileset dir="$">
<include name="com/**/model/**/*.java"/>
</fileset>
<hibernatecfg
version="3.0"
destDir="$"
dialect="org.hibernate.dialect.Oracle9Dialect"
driver="oracle.jdbc.driver.OracleDriver"
jdbcUrl="jdbc:oracle:thin:@localhost:1521:RESDL"
userName="test"
password="123"
showSql="true"
schema="true"
validateXML="true"
/>
<hibernate version="3.0"/>
</hibernatedoclet>
</target>
上面的代碼是生成hbm跟cfg文件的,下面再介紹如何從java類到資料庫:
XML code
<target name="hibernate-schema" depends="init, init-hibernate-schema"
description="Generate DB schema from the O/R mapping files">
<echo>+---------------------------------------------------+</echo>
<echo>| |</echo>
<echo>| R U N N I N G D B S C H E M A |</echo>
<echo>| |</echo>
<echo>+---------------------------------------------------+</echo>
<echo message="mysql.sql at etc/hbm2doc"></echo>
<sleep seconds="1"/>
<hibernatetool destdir="etc/hbm2doc">
<configuration propertyFile="$/hibernate.properties">
<fileset dir="$">
<include name="com/**/model/**/*.hbm.xml"/>
</fileset>
</configuration>
<hbm2ddl drop="true"
outputfilename="mysql.sql"/>
<hbm2doc/>
</hibernatetool>
</target>
當然ant工程里的一些初始化需要自己定義,我這里只摘錄關鍵部分,具體的東西請查閱相關文檔,hibernate tutorail里就有個例子
④ Java動態改變資料庫
順序解答:
首先要明白一個JAVA開發原理。一般來說用JSP網頁形式連接資料庫情況不多。JAVA里用servlet---javaBean連接。
一.登陸界面(jsp):純HTML編寫,不羅嗦了;
二.表單設置action="javaBeanId",意思是跳到到javaBean處理。
三.訪問資料庫:在.java文件里寫(javaBean)。至於WEB伺服器嘛:有TOMCAT,weblogic等。訪問各種資料庫的代碼:
1.JAVA連接ACCESS資料庫
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String url="jdbc:odbc:Driver=;DBQ="+application.getRealPath("/Data/ReportDemo.mdb");
Connection conn = DriverManager.getConnection(url,"","");
在上面的連接方法中,所涉及到的參數含義如下所示:
* sun.jdbc.odbc.JdbcOdbcDriver:驅動程序類的名稱。
* /Data/ReportDemo.mdb:資料庫文件
* 其中的用戶名和密碼均為空
2.JAVA連接MySQL資料庫
Class.forName("org.gjt.mm.mysql.Driver");
String url="jdbc:mysql://localhost/myDB?user=soft&password=soft1234&userUnicode=true&characterEncoding=8859_1"
Connection conn = DriverManager.getConnection(url);
在上面的連接方法中,所涉及到的參數含義如下所示:
* org.gjt.mm.mysql.Driver:驅動程序類的名稱
* localhost:資料庫的地址
* myDB:資料庫的名稱
* soft:訪問資料庫的用戶名
* soft1234:訪問資料庫的密碼
* 8859_1:使用的字元集。
3.JAVA連接SQL Server 7.0/2000資料庫
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb";
String user="sa";
String password="";
Connection conn = DriverManager.getConnection(url,user,password);
在上面的連接方法中,所涉及到的參數含義如下所示:
* com.microsoft.jdbc.sqlserver.SQLServerDriver:驅動程序類的名稱
* localhost:資料庫的地址
* 1433:資料庫服務的埠
* myDB:資料庫的名稱
* user:訪問資料庫的用戶名
* password:訪問資料庫的密碼
4.JAVA連接Oracle 8/8i/9i資料庫(thin模式)
Class.forName("oracle.jdbc.driver.OracleDriver");
String url="jdbc:oracle:thin:@192.168.0.1:1521:orcl";
String user="test";
String password="test";
Connection conn = DriverManager.getConnection(url,user,password);
在上面的連接方法中,所涉及到的參數含義如下所示:
* oracle.jdbc.driver.OracleDriver:驅動程序類的名稱
* jdbc:oracle:thin:使用thin模式連接
* 192.168.0.1:資料庫的IP地址
* 1521:資料庫服務的埠,這是Oracle的默認值
* orcl:資料庫的SID
* user:訪問資料庫的用戶名
* password:訪問資料庫的密碼
5.JAVA連接DB2資料庫
Class.forName("com.ibm.db2.jdbc.app.DB2Driver");
String url="jdbc:db2://127.0.0.1:5000/sample";
String user="admin";
String password="";
Connection conn = DriverManager.getConnection(url,user,password);
在上面的連接方法中,所涉及到的參數含義如下所示:
* com.ibm.db2.jdbc.app.DB2Driver:驅動程序類的名稱
* 127.0.0.1:資料庫的IP地址
* 5000:資料庫服務的埠
* sample:資料庫的名稱
* user:訪問資料庫的用戶名
* password:訪問資料庫的密碼
6.JAVA連接Sybase資料庫
Class.forName("com.sybase.jdbc.Sybdriver");
String url="jdbc:sybase:Tds:localhost:5007/myDB";
Properties sysProps = System.getProperties();
SysProps.put("user","userid");
SysProps.put("password","user_password");
Connection conn = DriverManager.getConnection(url,SysProps);
在上面的連接方法中,所涉及到的參數含義如下所示:
* com.sybase.jdbc.Sybdriver:驅動程序類的名稱
* localhost:資料庫的地址
* 5007:資料庫服務的埠
* myDB:資料庫的名稱
* userid:訪問資料庫的用戶名
* user_password:訪問資料庫的密碼
7.JAVA連接Informix資料庫
Class.forName("com.informix.jdbc.IfxDriver");
String url="jdbc:informix-sqli://123.45.67.89:1533/myDB:INFORMIXSERVER=myserver;user=testuser;password=testpassword";
Connection conn = DriverManager.getConnection(url);
在上面的連接方法中,所涉及到的參數含義如下所示:
* com.informix.jdbc.IfxDriver:驅動程序類的名稱
* 123.45.67.89:資料庫的地址
* 1533:資料庫服務的埠
* myDB:資料庫的名稱
* myserver:資料庫伺服器的名稱
* testuser:訪問資料庫的用戶名
* testpassword:訪問資料庫的密碼
8.JAVA連接PostgreSQL資料庫
Class.forName("org.postgresql.Driver");
String url="jdbc:postgresql://localhost/myDB";
String user="myuser";
String password="mypassword";
Connection conn = DriverManager.getConnection(url,user,password);
在上面的連接方法中,所涉及到的參數含義如下所示:
* org.postgresql.Driver:驅動程序類的名稱
* localhost:資料庫的地址
* myDB:資料庫的名稱
* myserver:資料庫伺服器的名稱
* myuser:訪問資料庫的用戶名
* mypassword:訪問資料庫的密碼
⑤ java動態連接sql資料庫的時候com.microsoft.sqlserver.jdbc.SQLServerException: 必須聲明表變數 "@P0"。
樓主,你是講表名作為參數傳進去了嗎?「必須聲明表變數」好像是說你得表名沒獲取到,沒有錯誤信息和代碼不好確定,不過我跟你同樣的錯誤,我的是表名獲取的時候用的#{tableName}改成${tableName}就好了。