解决方案:如果直接从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