Java在连接数据库时,能否不指定具体库名

Java在连接数据库时,能否不指定具体库名,第1张

不可以,你可以写多个连接,然后根据程序判断使用哪一个,但是具体到每一个,都是写死的

也就是说,你可以写jdbc:mysql://hostname/databaseName1111

jdbc:mysql://hostname/databaseName2222

你程序选择连接哪一个,但是具体的都是写死的

import javasqlConnection;

import javasqlDriverManager;

public class DBHelper {

private static final String driverName="commicrosoftsqlserverjdbcSQLServerDriver"; //加载jdbc驱动

private static final String dbURL="jdbc:sqlserver://localhost:1433;DatabaseName=Sarlays"; //链接服务器和数据库Sarlays

private static final String username="sa"; //数据库用户名

private static final String password="123456"; //数据库密码

private static Connection conn=null;

//静态代码负责加载驱动

static {

try {

ClassforName(driverName);

} catch (ClassNotFoundException e) {

// TODO Auto-generated catch block

eprintStackTrace();

}

}

//单例模式返回数据库链接对象

public static Connection getConnection() throws Exception{

if(conn==null){

conn=DriverManagergetConnection(dbURL, username, password);

return conn;

}

return conn;

}

}

将连接封装起来 一个工厂类

public class ConnectionFactory {

private static String _url = null;

private static String _user = null;

private static String _pwd = null;

private static String _driver = null;

public ConnectionFactory() {

// TODO Auto-generated constructor stub

}

static {

_driver = DBConfiggetDBConfig()getValue("driver");

_user = DBConfiggetDBConfig()getValue("user");

_pwd = DBConfiggetDBConfig()getValue("password");

_url = DBConfiggetDBConfig()getValue("url");

}

public static Connection getConnection() throws SQLException {

try {

ClassforName(_driver);

} catch (ClassNotFoundException e) {

// TODO Auto-generated catch block

Systemoutprintln("注册驱动失败");

eprintStackTrace();

throw new SQLException("注册驱动失败");

}

return DriverManagergetConnection(_url, _user, _pwd);

}

public static void release(Connection con, Statement stm, ResultSet rs) {

try {

if (con != null) {

conclose();

}

if (stm != null) {

conclose();

}

if (rs != null) {

rsclose();

}

} catch (SQLException e) {

// TODO Auto-generated catch block

eprintStackTrace();

}

}

}

然后再写一个配置文件

public class DBConfig {

private static DBConfig instance;

private static Properties info = new Properties();

private static String path = "dbconfigproperties";

public DBConfig() {

// TODO Auto-generated constructor stub

readDBConfig();

}

private void readDBConfig() {

InputStream inputStream = null;

try {

if (!(new File(path)exists())) {

path = "/bin/" + path;

}

inputStream = new FileInputStream(path);

infoload(inputStream);

} catch (FileNotFoundException e) {

// TODO Auto-generated catch block

eprintStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

eprintStackTrace();

} finally {

if (inputStream != null) {

try {

inputStreamclose();

} catch (IOException e) {

// TODO Auto-generated catch block

eprintStackTrace();

}

}

}

}

public synchronized static DBConfig getDBConfig() {

// 注意这里

if (instance == null) {

instance = new DBConfig();

}

return instance;

}

public String getValue(String key) {

return infogetProperty(key);

}

public static void main(String[] args) {

String driver = DBConfiggetDBConfig()getValue("driver");

String user = DBConfiggetDBConfig()getValue("user");

String pwd = DBConfiggetDBConfig()getValue("password");

String url = DBConfiggetDBConfig()getValue("url");

Systemoutprintln(driver + '\n' + user + '\n' + pwd + '\n' + url);

}

}

到时调用的时候

你将DBConfig中放在一个file文件中 读出来 下面就是DBConfig文件:是sqlserver的

想连接什么数据库 把driver url改一下就OK了 到网上查

driver=commicrosoftjdbcsqlserverSQLServerDriver

url=jdbc:microsoft:sqlserver://localhost:1433;databaseName=pubs

user=sa

password=

ConnectionFactorygetConnection(); 这样一句话就连接上了

ConnectionFactoryrelease(); 就关闭相关对象了

看来lz并没有认真看api文档啊,在接口connection中有一个getmetadata()函数,其返回值是接口databasemetadata,里面有各种数据库的配置信息,如是否支持空、最大连接数、用户可以调用的所有存储过程等,其中包括getschemas()-获取所有模式,gettables(),获取所有的表,根据输入的不同参数可以获取所有表或者其中某个模式的表,还包括表的注射等信息,getcolumns()则是获取表的具体字段,这些函数大多是以resultset的形式返回,和一般的jdbc使用差不多,lz慢慢研究研究吧

import javasql;//导入SQL的所有包

public class AddAction{

String stuid = "s001";

String stuname = "张三";

ClassforName("commysqljdbcDriver");//连接驱动

String url = "jdbc:mysql://localhost/stuinfo";//连接字符串

String user = "root";

String pass = "root";

Connection con = DriverManagergetConnection(url, user, pass);//得到连接

Statement st = concreateStatement();//得到数据库 *** 作对象

String sql = "insert into stuinfo values('" + stuid + "','" + stuname

+ "')";//插入SQL字符串

int i = stexecuteUpdate(sql);//进行插入

if (i > 0) {//如果有受到影响的行数

Systemoutprintln("success!");

} else {

Systemoutprintln("failure!");

}

}

import javasql;

import javautilArrayList;

class Test

{

public ArrayList getUserNames()

{

Connection conn=null;

Statement stat=null;

ResultSet rset=null;

ArrayList list=new ArrayList();

String names=null;

try

{

ClassforName("commicrosoftjdbcsqlserverSQLServerDriver");

conn=DriverManagergetConnection("jdbc:microsoft:sqlserver://127001:1433;DatabaseName=text","root","123456");

stat=conncreateStatement(ResultSetTYPE_SCROLL_SENSITIVE,ResultSetCONCUR_UPDATABLE);

rset=statexecuteQuery("select from tblStudent");

while(rsetnext())

{

names=rsetgetString();

listadd(names);

}

}

catch(Exception E)

{

Systemoutprintln(E);

}

finally

{

try

{

rsetclose();

statclose();

connclose();

}

catch(SQLException SQLE)

{

Systemoutprintln(SQLE);

}

}

return list;

}

}

url 是数据库的链接地址, 一般包括协议, 地址, 端口

serverName 数据库所在的地址, 本机就是localhost, 其他机器写IP地址

portNumber 数据库占用的端口

databaseName 数据库名, 除了Oracle以为, 其他的数据库都有多个库文件, 这个就是要使用的库的名称

userName 登陆数据库用的用户名

password 登陆数据库用的密码

用java是不能修改表结构的,你增加和删除字段,是属于修改表结构。

用语句修改表结构只能在数据库执行sql。

增加字段

alter table 表名 add 增加的表字段名称 增加字段的数据类型。

删除字段

alter table 表名 drop column 要删除的字段名称

查询表的各个字段信息。

select from syscolumns where id=(select id from sysobjects where name='表名')

以上就是关于Java在连接数据库时,能否不指定具体库名全部的内容,包括:Java在连接数据库时,能否不指定具体库名、JAVA中如何创建数据库连接里面参数的具体含义是什么、java 使用jdbc技术怎样连接同一个数据库,但有多个数据库名等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/sjk/9498689.html

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

发表评论

登录后才能评论

评论列表(0条)

保存