经过access测试,ok
String url = "jdbc:odbc:test";//最后一个为数据库名
Statement sm = null;
String command = null;
ResultSet rs = null;
String tableName = null;
String cName = null;
String result = null;
String []pram = new String[1];
List <String> tables = new ArrayList<String>();
pram[0] = "table";
BufferedReader input = new BufferedReader(new InputStreamReader(
Systemin));
try {
try {
ClassforName("sunjdbcodbcJdbcOdbcDriver"); // 加载驱动
} catch (ClassNotFoundException e) {
Systemoutprintln("Can not load Jdbc-Odbc Bridge Driver");
Systemerrprint("ClassNotFoundException:");
Systemerrprintln(egetMessage());
}
Connection con = DriverManagergetConnection(url, "admin", "admin"); // 连接到数据库
DatabaseMetaData dm = congetMetaData();
rs = dmgetTables(null, null, null, pram);//查找所有的表
while(rsnext()){
tablesadd(rsgetString(3));
}
rsclose();
for(String tb : tables){
rs = dmgetColumns(null, null, tb, null);//查找当前表的字段
Systemoutprintln("\nthe table is: " + tb);
ResultSetMetaData rsmd = rsgetMetaData();
int len, type;
len = rsmdgetColumnCount();
// Systemoutprintln(len);
for(int i = 1; i <= len; i ++){
type = rsmdgetColumnType(i);
//这里是获取了一个字段类型的int型,需要转化成string的话要做一个swtich,就不转了,你自己看javasqlTypes这个类去
Systemoutprint("\t" + rsmdgetColumnName(i) + ": " + rsmdgetColumnType(i));
}
}
rsclose();
conclose();
// }
} catch (SQLException ex) {
Systemoutprintln("SQLException:");
while (ex != null) {
Systemoutprintln("Message:" + exgetMessage());
ex = exgetNextException();
}
} catch (Exception e) {
Systemoutprintln("IOException");
}
用Sql语句查询指定表格中指定字段的数据类型
一、语句通过systypes,syscolumns,sysobjects,三个系统表格联合检索获取结果。
systypes:数据库支持的数据类型属性。
syscolumns:数据库中各表格结构属性。
sysobjects:数据库中所有对象的属性。
二、检索语句演示
1、示例表格:base_zwb
2、语句如下:
select name from systypes wherextype in (select xtype from syscolumns where name = 'zw_mc' and
id in (select ID from sysobjects where name = 'base_zwb'));
语句解析:
1):select ID from sysobjects where name = 'base_zwb'),从表格‘sysobjects ’中,获取表格'base_zwb'的对象ID
2):select xtype from syscolumns where name = 'zw_mc' and id in (select ID from sysobjects where name = 'base_zwb'),以字段名称‘zw_mc’和第1步中获取的‘ID’,从表格‘syscolumns ’中获取数据类型的编号'xtype'
3):以第2部获取的 'xtype'编号,从表格‘systypes ’中获取数据类型。
结果如图:
这三个表对你有用
sysobjects和syscolumns和systypes
第一个可以查到表,第二个表可以查到列,第三个表可以查到数据类型
关联起来用就可以得到某个表中所有列的数据类型了
aReader sdr;//sdr在此定义
你只是定义了一个sqldatareader类型的 ser但是你没有实例化它的代码啊
你的Button1_Click里面的是正确的,
SqlDataReader sdr = sqlcommandExecuteReader();
但是在这个Button2_Click中你没有实例化sdr啊,你的sdr是个空的
在说了你的button2想查看下一条记录,你查询数据库的代码呢??
你最好不要这样写,你最好先把数据查出来,放在一个dataset或者datatable里面,然后点击一次button根据索引去从dataset或者datatable中去查找你要的数据
char转换
Qt下面,字符串都用QString,确实给开发者提供了方便,想想VC里面定义的各种变量类型,而且函数参数类型五花八门,经常需要今年新那个类型转换
Qt再使用第三方开源库时,由于库的类型基本上都是标准的类型,字符串遇的多的就是Char类型
在Qt下怎样将QString转char呢,需要用到QByteArray类,QByteArray类的说明详见Qt帮助文档。
因为char最后都有一个‘/0’作为结束符,而采用QString::toLatin1()时会在字符串后面加上‘/0’
方法如下:
Qstring
str;
char
ch;
QByteArray
ba
=
strtoLatin1();
ch=badata();
这样就完成了QString向char的转化。经测试程序运行时不会出现bug
注意第三行,一定要加上,不可以strtoLatin1()data()这样一部完成,可能会出错。
补充:以上方法当QString里不含中文时,没有问题,但是QString内含有中文时,转换为char就是乱码,采用如下方法解决:
方法1:
添加GBK编码支持:
#include
<QTextCodec>
QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));
QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK"));
然后改变上面的第三行为:QByteArray
ba
=
strtoLoacl8Bit();
toLoacl8Bit支持中文
方法2:
先将QString转为标准库中的string类型,然后将string转为char,如下:
std::string
str
=
filenametoStdString();
const
char
ch
=
strc_str();
1、首先打开MYSQL的管理工具,新建一个test表,并且在表中插入两个字段。
2、接下来在Editplus编辑器中创建一个PHP文件,然后进行数据库连接,并且选择要 *** 作的数据库。
3、然后通过mysql_query方法执行一个Insert的插入语句。
4、执行完毕以后,我们回到数据库管理工具中,这个时候你会发现插入的中文乱码了。
5、接下来我们在PHP文件中通过mysql_query执行一个set names utf8语句即可完成 *** 作。
以上就是关于请教:JDBC如何得到数据库列的类型全部的内容,包括:请教:JDBC如何得到数据库列的类型、用一个Sql语句查询出表中的一个字段的数据类型问题。、如何查找数据库表字段的类型!!!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)