Ⅰ java 中如何判斷某個資料庫表的欄位中是否有主鍵,哪個是主鍵
java.sql.DatabaseMetaData類的方法
ResultSet getImportedKeys(String catalog,String schema,String table)
throws SQLException獲取由給定表的外鍵列(表導入的主鍵)引用的主鍵列的描述。
Ⅱ java如何獲得資料庫表中各欄位的欄位名
Java獲取資料庫的表中各欄位的欄位名,代碼如下:
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.ResultSet;
importjava.sql.PreparedStatement;
importjava.sql.ResultSetMetaData;
importjava.sql.SQLException;
publicclassTestDemo{
(){
Connectionconn=null;
try{
Class.forName("com.mysql.jdbc.Driver");
Stringurl="jdbc:mysql://資料庫IP地址:3306/資料庫名稱";
Stringuser="資料庫用戶名";
Stringpass="資料庫用戶密碼";
conn=DriverManager.getConnection(url,user,pass);
}catch(ClassNotFoundExceptione){
e.printStackTrace();
}catch(SQLExceptione){
e.printStackTrace();
}
returnconn;
}
publicstaticvoidmain(String[]args){
Connectionconn=getConnection();
Stringsql="select*fromAccessType";
PreparedStatementstmt;
try{
stmt=conn.prepareStatement(sql);
ResultSetrs=stmt.executeQuery(sql);
ResultSetMetaDatadata=rs.getMetaData();
for(inti=1;i<=data.getColumnCount();i++){
//獲得所有列的數目及實際列數
intcolumnCount=data.getColumnCount();
//獲得指定列的列名
StringcolumnName=data.getColumnName(i);
//獲得指定列的列值
intcolumnType=data.getColumnType(i);
//獲得指定列的數據類型名
StringcolumnTypeName=data.getColumnTypeName(i);
//所在的Catalog名字
StringcatalogName=data.getCatalogName(i);
//對應數據類型的類
StringcolumnClassName=data.getColumnClassName(i);
//在資料庫中類型的最大字元個數
intcolumnDisplaySize=data.getColumnDisplaySize(i);
//默認的列的標題
StringcolumnLabel=data.getColumnLabel(i);
//獲得列的模式
StringschemaName=data.getSchemaName(i);
//某列類型的精確度(類型的長度)
intprecision=data.getPrecision(i);
//小數點後的位數
intscale=data.getScale(i);
//獲取某列對應的表名
StringtableName=data.getTableName(i);
//是否自動遞增
booleanisAutoInctement=data.isAutoIncrement(i);
//在資料庫中是否為貨幣型
booleanisCurrency=data.isCurrency(i);
//是否為空
intisNullable=data.isNullable(i);
//是否為只讀
booleanisReadOnly=data.isReadOnly(i);
//能否出現在where中
booleanisSearchable=data.isSearchable(i);
System.out.println(columnCount);
System.out.println("獲得列"+i+"的欄位名稱:"+columnName);
System.out.println("獲得列"+i+"的類型,返回SqlType中的編號:"+columnType);
System.out.println("獲得列"+i+"的數據類型名:"+columnTypeName);
System.out.println("獲得列"+i+"所在的Catalog名字:"+catalogName);
System.out.println("獲得列"+i+"對應數據類型的類:"+columnClassName);
System.out.println("獲得列"+i+"在資料庫中類型的最大字元個數:"+columnDisplaySize);
System.out.println("獲得列"+i+"的默認的列的標題:"+columnLabel);
System.out.println("獲得列"+i+"的模式:"+schemaName);
System.out.println("獲得列"+i+"類型的精確度(類型的長度):"+precision);
System.out.println("獲得列"+i+"小數點後的位數:"+scale);
System.out.println("獲得列"+i+"對應的表名:"+tableName);
System.out.println("獲得列"+i+"是否自動遞增:"+isAutoInctement);
System.out.println("獲得列"+i+"在資料庫中是否為貨幣型:"+isCurrency);
System.out.println("獲得列"+i+"是否為空:"+isNullable);
System.out.println("獲得列"+i+"是否為只讀:"+isReadOnly);
System.out.println("獲得列"+i+"能否出現在where中:"+isSearchable);
}
}catch(SQLExceptione){
e.printStackTrace();
}
}
}
Ⅲ java語句中取得sql中的一個欄位的值
......
ResultSet rs = stmt.executeQuery(sql);
String priceType = null;
if(rs.next()) {
priceType = rs.getString("value");
......
}
Ⅳ 如何在java獲得從sql中查到數據的欄位名
JDBC得到結果集 resultSet以後可以得到所有的欄位名,欄位類型,及數據。建議查看JDK中的API文檔,ResultSet這個類。API已經上傳。
Ⅳ Java中用什麼語句來判斷SQL資料庫中表的某行數據是否有外鍵
不重要的話,你可以刪了試試,有外鍵肯定出錯。。或者從關聯關繫上找突破口。比如兩個類學生和老師有多對一的關系。在學生類中維護關聯的話,學生類中就會有一個老師對象域,可以通過判斷它是否為空,來判斷有沒有外鍵。當然,我只是提供思路,可行性還是可以的。
Ⅵ java中如何用sql判斷資料庫表中是否存在某個欄位
sqlserver有一個系統表sysobjects,其中欄位xtype=』U』 為表
Ⅶ 如何用Java查詢SQL中信息 條件如下
CREATE PROCEDURE getStudentInfoByNo --存儲過程,通過給定的學號返回學生信息
(@Sno INT)
AS
BEGIN
IF EXISTS(SELECT * FROM Student WHERE Sno=@Sno)
SELECT 1,* FROM Student WHERE Sno=@Sno --有結果返回一個狀態1,方便在程序中判斷
ELSE
SELECT 0,'查無此人' --沒有結果,返回狀態0,在程序中判斷.
END
這是在sqlserver中寫的存儲過程,以下是java中調用存儲過程的代碼
DriverManager.registerDriver(new SQLServerDriver());
//連接
String url="jdbc:microsoft:sqlserver://localhost:1433;databasename=YourDBName";
Connection conn = DriverManager.getConnection(url,"sa","");
String sql = "{call getStudentInfoByNo (?)}";
CallableStatement cs = conn.prepareCall(sql);
//在執行之前,必須說明所有?的內容和類型
cs.setInt(1, Sno1);//設置位置1的參數值整數Sno1
ResultSet rs = cs.executeQuery();
while(rs.next())
{
System.out.println(rs.getString(1));
//在這里可以通過rs.getString(1)判斷,如果是1,則繼續輸出rs.getString(2),rs.getString(3)等等,直到把這個學生的所有信息都輸出為止,
//如果rs.getString(1)是0,則只需輸出rs.getString(2).即輸出"查無此人"
}
rs.close();
cs.close();
conn.close();
一般可以採用這種方法解決復雜的問題.當然如果覺得復雜.
可以採用
sql語句和java相結合的方法,
int sno=0;
//給學號賦值,通過各種方法,如表達能提交
StringBuilder sb = new StringBilder();
sb.append("select * from student ");
if(sno>0)//對獲得的學好進行判斷
sb.append(" where sno = ").append(sno);
PreparedStatement ps = conn.prepareStatement(sb.toString());
rs = s.executeQuery(sqlstr);
if(rs.next)
{
//查詢出此學員所有的信息
}
else
{
System.out.print("查無此人");
}
Ⅷ java解析字元串(解析sql語句,得到需要查詢顯示的欄位名)。
在Sql語句前加上SET FMTONLY ON,再執行Sql語句,該設置只將元數據返回給客戶端,可以用於測試響應的格式,而不必實際執行查詢.有了返回的表結構,還怕得到不到要查詢的欄位
例:
SET FMTONLY ON;
SELECT f_spbm,f_spmc as '名稱' FROM 表1;
SET FMTONLY OFF;
Ⅸ sql語句的某個欄位有時用有時不用是在Java中如何判斷
資料庫肯定是定死的,怎麼一會又month欄位,一會又沒有了。應該是有的是具體值,有的為空或者null,在Imp層判斷再做查詢,
Ⅹ 用Java如何根據欄位名判斷某一欄位在 sql 數據表中是第幾列
加個欄位sequence ,獲取主鍵時一起取不就可以了