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工具 激活破解