我正在尝试在我的项目中testing一些exception,我发现的exception之一是SQlException 。 看起来你不能去new SqlException()所以我不知道我怎么能抛出一个exception,尤其是没有以某种方式调用数据库(因为这些是unit testing通常build议不要调用数据库,因为它是慢的) 。 我正在使用NUnit和Moq,但我不知道如何伪造。 回答一些似乎都基于ADO.NET的答案,请注意,我正在使用Linq到Sql。 所以东西就像幕后。 @MattHamilton所要求的更多信息: System.ArgumentException : Type to mock must be an interface or an abstract or non-sealed class. at Moq.Mock`1.CheckParameters() at Moq.Mock`1..ctor(MockBehavior behavior, Object[] args) at Moq.Mock`1..ctor(MockBehavior behavior) at Moq.Mock`1..ctor() 当它尝试模拟时,第一行的post var ex = new Mock<System.Data.SqlClient.SqlException>(); ex.SetupGet(e => e.Message).Returns("Exception message");
从.NET 3.5 / C#应用程序,我想赶上SqlException但只有当它是由 SQL Server 2008实例上的死锁引起的 。 典型的错误消息是Transaction (Process ID 58) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction. Transaction (Process ID 58) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction. 但是,这个exception似乎没有logging在错误代码中。 […]
我有一个插入存储过程将馈送数据到Table1并从Table1中获取Column1值,并调用将提供Table2的第二个存储过程。 但是当我把第二存储过程称为: Exec USPStoredProcName 它给我错误如下: EXECUTE之后的事务计数表示不匹配的BEGIN和COMMIT语句的数量。 前一个计数= 1,当前计数= 0。 我已经阅读了其他这样的问题的答案,我无法find确切的提交计数正在搞砸。
当我运行下面的servlet时: // package projectcodes; public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException { String UserID = request.getParameter("UserID"); String UserPassword = request.getParameter("UserPassword"); String userName = null; String Email = null; Encrypter encrypter = new Encrypter(); String hashedPassword = null; try { hashedPassword = encrypter.hashPassword(UserPassword); Context context = new InitialContext(); DataSource ds = (DataSource)context.lookup("java:comp/env/jdbc/photog"); Connection connection = ds.getConnection(); […]
我有一个Java类,通过JDBC访问MySQL数据库,在Tomcat上运行的JSP中使用,我得到没有驱动程序发现exception。 我有一个方法: private static Statement makeStatement() { try{ com.mysql.jdbc.Driver d = null; try{d = new com.mysql.jdbc.Driver();}catch(Exception e){ System.out.println("ERROR BY NEW DRIVER " + e.toString() + "\n");e.printStackTrace();} Connection con = DriverManager.getConnection(url, user, password); return con.createStatement(); }catch(java.sql.SQLException ex){ System.out.println("ERROR IN makeStatement " + "\nERROR – " + ex.toString() + "\n ERROR CODE:\n " + ex.getErrorCode() + "\nSQLSTATE:\n […]
我有以下string值:“沃尔玛奥巴马👽💔” 我正在使用MySQL和Java。 我得到以下exception:`java.sql.SQLException:不正确的string值:'\ xF0 \ x9F \ x91 \ xBD \ xF0 \ x9F …' 这是我想要插入的variables: var1 varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL` 我试图插入“沃尔玛奥巴马👽💔”的Java代码是一个preparedStatement。 所以我使用setString()方法。 看起来问题是值的编码。 我该如何解决这个问题? 以前我使用的是Derby SQL,值刚好是两个sqaure(我认为这是空字符的表示) 所有的帮助非常感谢!
问:是否有更好的方法来处理SqlException? 以下示例依赖于解释消息中的文本。 Eg1:如果一个表不存在,我有一个现有的try catch来处理。 忽略我可以检查表是否存在的事实。 try { //code } catch(SqlException sqlEx) { if (sqlEx.Message.StartsWith("Invalid object name")) { //code } else throw; } Eg2:没有try catch显示重复键exception if (sqlEx.Message.StartsWith("Cannot insert duplicate key row in object")) 解决scheme:我的SqlExceptionHelper的开始 //– to see list of error messages: select * from sys.messages where language_id = 1033 order by message_id public static class SqlExceptionHelper […]
我的桌子的结构: id int AUTO_INCREMENT PRIMARY KEY title text url text age int 以下是我试图将数据保存到此表中的方法: PreparedStatement ps=con.prepareStatement("insert into table(title, url, age) values ('\"+title+\",\"+url+\",\"+age+\"')"); System.out.println("Connected database successfully.."); ps.executeUpdate(); 但是当我运行该应用程序,我得到 java.sql.SQLException:列计数与第1行的值计数不匹配 我猜这个问题可能在id列中,如何解决呢?
我在我的SQLiteOpenHelper onCreate()创build我的表,但收到 SQLiteException: no such table 要么 SQLiteException: no such column 错误。 为什么? 注意: (这是每周几十个类似问题的汇总总结,试图在这里提供一个“规范的”社区wiki问题/答案,以便所有这些问题都可以被引导到一个很好的参考)。