java 自動注冊odbc
首先說下odbc的注冊原理,windows下odbc的注冊均會在注冊表odbc.ini 產生相應項,因此我們隻用用java寫入注冊表即可
java寫注冊表需要一個com.ice.jni.registry 但是這個東西分32位和64位,因此要特別判斷
下麵以寫一個名為jxy的odbc源為例
import com.ice.jni.registry.NoSuchKeyException;
import com.ice.jni.registry.RegDWordValue;
import com.ice.jni.registry.RegStringValue;
import com.ice.jni.registry.Registry;
import com.ice.jni.registry.RegistryException;
import com.ice.jni.registry.RegistryKey;
import com.ice.jni.registry.RegistryValue;
import com.sun.corba.se.pept.transport.ContactInfo;
public static void reg(){ //注冊odbc
Properties props = System.getProperties();
props.get("os.name");
if(((String) props.get("os.name")).toLowerCase().indexOf("windows")==-1){ //判斷是否為windows
return;
}
String last;
File t=new File("ICE_JNIRegistry.dll"),s;
if(t.exists())t.delete();
if(((String)props.get("os.arch")).indexOf("64")>-1){ //判斷是否為64位係統
s=new File("ICE_JNIRegistry -64.dll");
last="ICE_JNIRegistry -64.dll";
s.renameTo(t);
}else{
s=new File("ICE_JNIRegistry -32.dll");
last="ICE_JNIRegistry -32.dll";
s.renameTo(t);
}
try {
String place;
if(System.getenv("windir")!=null){
place=System.getenv("windir")+"\\system32";
place.replaceAll("\\\\{2}","\\\\");
}else{
place=(String) props.get("user.dir");
}
RegistryKey odbc = Registry.HKEY_CURRENT_USER.openSubKey("Software").createSubKey("ODBC","").createSubKey("ODBC.INI","");
RegistryKey jxy=odbc.createSubKey("jxy", "");
jxy.setValue(new RegStringValue(jxy, "Driver",place+"\\SQLSRV32.dll")); //如果係統沒有sql,則用當前目錄的
jxy.setValue(new RegStringValue(jxy,"Server","JXY-THINK\\JXY_SQL_SERVER"));
jxy.closeKey();
odbc.closeKey();
} catch (NoSuchKeyException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (RegistryException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
s=new File("ICE_JNIRegistry.dll");
t=new File(last);
s.renameTo(t);
}
所需dll和jar均以圖片格式上傳,另存為保存成zip即可

如果用sql server 也可以不用odbc,直接用jdbc for sql server即可
private static String url="jdbc:sqlserver://JXY-THINK;instanceName=JXY_SQL_SERVER;database=學籍管理係統";
private static Connection con=null;
private static String sql;
private static Statement stmt;
public static void init(){
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public static int login_s(String user,String password){
try {
con=DriverManager.getConnection(url, user, password);
stmt=con.createStatement();
} catch (SQLException e) {
e.printStackTrace();
return 1;
}
return 0;
}
所需文件依舊為圖片……另存為zip

最後更新:2017-04-03 12:53:47
上一篇:
SliferMenu詳解
下一篇:
android 按鍵聲音
MQC功能測試大揭秘
Java中的數據結構一覽
JAVA 內存模型(一)
Flume sink=avro rpc connection error
StringBuffer使用append提示String concatenation as argument to 'StringBuffer.append()' call
《數據結構與抽象:Java語言描述(原書第4版)》一JI2.2 處理異常
proxool數據庫連接池使用實例
LINQ to SQL語句 Union/Intersect/Except
EditTextPreference InputFilter過濾字符串及限製長度的實現
webstorm等Jetbrains工具 激活破解