我已经在我的桌子上创建了我的桌子SQLiteOpenHelper onCreate()但收到了
SQLiteException: no such table
Run Code Online (Sandbox Code Playgroud)
要么
SQLiteException: no such column
Run Code Online (Sandbox Code Playgroud)
错误.为什么?
注意:
(这是每周数十个类似问题的合并摘要.试图在这里提供一个"规范的"社区维基问题/答案,以便所有这些问题可以引导到一个很好的参考.)
我有以下字符串值:"walmart obama"
我正在使用MySQL和Java.
我收到以下异常:`java.sql.SQLException:字符串值不正确:'\ xF0\x9F\x91\xBD\xF0\x9F ...'
这是我要插入的变量:
var1 varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL`
Run Code Online (Sandbox Code Playgroud)
我试图插入"walmart obama"的Java代码是一个preparedStatement.所以我正在使用这种setString()方法.
看起来问题是值的编码.我怎样才能解决这个问题?以前我使用的是Derby SQL,而且最终只有两个sqaures(我认为这是null字符的表示)
非常感谢所有帮助!
从.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.
但是,对于此异常,它似乎不是一个记录错误代码.
针对其消息中存在死锁关键字而过滤异常似乎是实现此行为的一种非常难看的方式.有人知道这样做的正确方法吗?
我有一个插入存储过程,它将数据提供给Table1并从Table1获取Column1值并调用第二个存储过程,它将为Table2提供数据.
但是,当我将第二个存储过程称为:
Exec USPStoredProcName
Run Code Online (Sandbox Code Playgroud)
它给我的错误如下:
EXECUTE之后的事务计数表示BEGIN和COMMIT语句的数量不匹配.先前的计数= 1,当前计数= 0.
我已经阅读了其他类似问题的答案,但我无法找到确切的提交计数在哪里搞砸了.
我试图在我的项目中测试一些异常,并且我遇到的一个例外是SQlException.
看来你不能new SqlException()这样做我不知道怎么能抛出一个异常,特别是没有以某种方式调用数据库(因为这些是单元测试,通常建议不要调用数据库,因为它很慢).
我正在使用NUnit和Moq,但我不确定如何伪造这个.
回应一些似乎都基于ADO.NET的答案,请注意我使用的是Linq to 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()
Run Code Online (Sandbox Code Playgroud)
在尝试模型时发布到第一行
var ex = new Mock<System.Data.SqlClient.SqlException>();
ex.SetupGet(e => e.Message).Returns("Exception message");
Run Code Online (Sandbox Code Playgroud) 问:有没有更好的方法来处理SqlExceptions?
以下示例依赖于解释消息中的文本.
Eg1:如果表不存在,我有一个现有的try catch来处理.
忽略我可以检查表是否存在于第一位的事实.
try
{
//code
}
catch(SqlException sqlEx)
{
if (sqlEx.Message.StartsWith("Invalid object name"))
{
//code
}
else
throw;
}
Run Code Online (Sandbox Code Playgroud)
Eg2:没有try catch显示重复的键异常
if (sqlEx.Message.StartsWith("Cannot insert duplicate key row in object"))
Run Code Online (Sandbox Code Playgroud)
解决方案:我的SqlExceptionHelper的开始
//-- to see list of error messages: select * from sys.messages where language_id = 1033 order by message_id
public static class SqlExceptionHelper
{
//-- rule: Add error messages in numeric order and prefix the number above the method
//-- 208: Invalid object name '%.*ls'. …Run Code Online (Sandbox Code Playgroud) 我尝试运行此程序时遇到此异常.这是微软的一个例子.我已经通过项目属性将sqljdbc4.jar添加到netbeans中的类路径中,用于编译和运行.我还测试了可以通过使用下面的import语句找到该类 - 在编译期间没有错误,所以它必须找到jar.
是否与sqldbc4.jar引用的dll或某些sql dll有关?
这是确切的例外,下面是确切的代码,密码除外.
例外:
run:
java.sql.SQLException: No suitable driver found for jdbc:microsoft:sqlserver://localhost:1433;databaseName=HealthCareDatabase
Error Trace in getConnection() : No suitable driver found for jdbc:microsoft:sqlserver://localhost:1433;databaseName=HealthCareDatabase
Error: No active Connection
at java.sql.DriverManager.getConnection(DriverManager.java:602)
at java.sql.DriverManager.getConnection(DriverManager.java:185)
at javaapplication1.Connect.getConnection(Connect.java:35)
at javaapplication1.Connect.displayDbProperties(Connect.java:50)
at javaapplication1.JavaApplication1.main(JavaApplication1.java:23)
BUILD SUCCESSFUL (total time: 1 second)
Run Code Online (Sandbox Code Playgroud)
码:
package javaapplication1;
import com.microsoft.sqlserver.jdbc.SQLServerDriver;
import java.*;
public class Connect {
private java.sql.Connection con = null;
private final String url = "jdbc:microsoft:sqlserver://";
private final String serverName = "localhost";
private final String portNumber = "1433"; …Run Code Online (Sandbox Code Playgroud) 我有一个从C#windows服务运行的以下内联SQL:
UPDATE table_name SET
status_cd = '2',
sdate = CAST('03/28/2011 18:03:40' AS DATETIME),
bat_id = '33acff9b-e2b4-410e-baaf-417656e3c255',
cnt = 1,
attempt_date = CAST('03/28/2011 18:03:40' AS DATETIME)
WHERE id = '1855'
Run Code Online (Sandbox Code Playgroud)
当我从应用程序内对SQL Server数据库运行时,我收到以下错误:
System.Data.SqlClient.SqlException:将varchar数据类型转换为datetime数据类型会导致超出范围的值.该语句已终止.
但是,如果我从SQL Management Studio中获取SQL并运行它,它将运行没有问题.
可能导致此问题的任何想法?
(此代码在C#中使用Dapper Dot Net)
此代码有效:
var command = "UPDATE account SET priority_id = @Priority WHERE name = @Name";
connection_.Execute(command, new { Name = "myname", Priority = 10 } );
Run Code Online (Sandbox Code Playgroud)
此代码抛出SqlException:
class MyAccount
{
public string Name;
public int Priority;
}
var command = "UPDATE account SET priority_id = @Priority WHERE name = @Name";
var acct = new MyAccount { Name = "helloworld", Priority = 10 };
connection_.Execute(command, acct);
Run Code Online (Sandbox Code Playgroud)
System.Data.SqlClient.SqlException:必须声明标量变量"@Priority".
为什么?
我怎么能抓住这个例外:
com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException:
Duplicate entry '22-85' for key 'ID_CONTACT'
Run Code Online (Sandbox Code Playgroud)