解決方案:如果直接從Azure SQL Server使用jdbc連接字符串,請將數據庫url後的「database = ...」更改爲「databaseName = ..」 。「並解決了這個問題。當我嘗試通過Android應用程序向數據庫插入數據時,Invaled Object Name異常
我想在我的Android應用程序上使用Azure SQL數據庫。
Connection con = basla.returnCon();
Statement statement = con.createStatement();
statement.executeQuery("INSERT INTO test VALUES ('lol') ");
「basla」 是我的AsyncTask對象,並通過getCon返回連接(),以 「CON」。
Class.forName("net.sourceforge.jtds.jdbc.Driver");
this.con = DriverManager.getConnection("jdbc:jtds:sqlserver://walky.database.windows.net:1433;database=Walky;user=***@walky;password=***;encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;loginTimeout=30;");
這是我的連接字符串,你可以看到默認的數據庫連接是「Walky」。
並沒有在我的數據庫 「測試」 表。
現在,當我嘗試
statement.executeQuery("INSERT INTO test VALUES ('lol') ");
此,拋出異常「Invaled對象名稱‘測試’
statement.executeQuery("USE Walky INSERT INTO test VALUES ('lol') ");
此,拋出約,我不能使用異常」使用「的語句和我必須創建另一個數據庫的另一個連接。
statement.executeQuery("INSERT INTO [Walky].[dbo].[test] VALUES ('lol') ");
此,拋出異常有關Walky.dbo.tes t不是我的sql服務器版本的兼容參考。我也試過Edit -> IntelliSense -> Refresh Local Cache
。
我可以通過SQL Server Management Studio插入數據,但無法使用我的Android應用程序執行此操作。
有沒有我失蹤或做錯了?
謝謝你,對不起我的英文不好。
不能再次拋出java.sql.SQLException:入侵對象名稱'test'。 – ReadyFreddy
你說你的'Walky'數據庫中存在'test'表嗎?嘗試改變你的連接字符串來指定'databaseName'而不是'database'就像你擁有它。您的連接字符串將如下所示:'this.con = DriverManager.getConnection(「jdbc:jtds:sqlserver://walky.database.windows.net:1433; databaseName = Walky; user = *** @ walky; password = * **;加密= TRUE; trustServerCertificate = FALSE; hostNameInCertificate = * database.windows.net; loginTimeout = 30;「);'。我已經更新了我的答案。 – ishmaelMakitla
謝謝!將「數據庫」更改爲「databaseName」即可解決此問題。添加解決方案到我的文章。 – ReadyFreddy