GVKun编程网logo

如何捕获特定的SqlException错误?(应用程序如何捕捉sql语句执行中的错误信息?)

22

如果您想了解如何捕获特定的SqlException错误?的相关知识,那么本文是一篇不可错过的文章,我们将对应用程序如何捕捉sql语句执行中的错误信息?进行全面详尽的解释,并且为您提供关于.net访问远

如果您想了解如何捕获特定的SqlException错误?的相关知识,那么本文是一篇不可错过的文章,我们将对应用程序如何捕捉sql语句执行中的错误信息?进行全面详尽的解释,并且为您提供关于.net 访问远程的MSSQL报System.AccessViolationException错误的解决方法、Android json错误com.google.gson.JsonSyntaxException:java.lang.IllegalStateException、android中的SQLException错误处理、asp.net-mvc – 没有其他用户的DB上的DbUpdateConcurrencyException.解决方法失败,出现NullException错误的有价值的信息。

本文目录一览:

如何捕获特定的SqlException错误?(应用程序如何捕捉sql语句执行中的错误信息?)

如何捕获特定的SqlException错误?(应用程序如何捕捉sql语句执行中的错误信息?)

问: 是否有更好的方法来处理SqlExceptions?

下面的示例依赖于解释消息中的文本。

Eg1: 如果表不存在,我有一个现有的try catch来处理。
忽略了我可以首先检查表是否存在的事实。

try{    //code}catch(SqlException sqlEx){        if (sqlEx.Message.StartsWith("Invalid object name"))        {            //code        }        else            throw;}

EG2: 没有try catch显示重复的密钥异常

if (sqlEx.Message.StartsWith("Cannot insert duplicate key row in object"))

解决方案:我的SqlExceptionHelper的开始

//-- to see list of error messages: select * from sys.messages where language_id = 1033 order by message_idpublic static class SqlExceptionHelper{    //-- rule: Add error messages in numeric order and prefix the number above the method    //-- 208: Invalid object name ''%.*ls''.    public static bool IsInvalidObjectName(SqlException sex)    { return (sex.Number == 208); }    //-- 2601: Cannot insert duplicate key row in object ''%.*ls'' with unique index ''%.*ls''. The duplicate key value is %ls.    public static bool IsDuplicateKey(SqlException sex)    { return (sex.Number == 2601); }}

答案1

小编典典

SqlException具有您可以检查的Number属性。对于重复错误,数字为2601。

catch (SqlException e){   switch (e.Number)   {      case 2601:         // Do something.         break;      default:         throw;   } }

要获取服务器中所有SQL错误的列表,请尝试以下操作:

 SELECT * FROM sysmessages

更新资料

现在可以在C#6.0中简化

catch (SqlException e) when (e.Number == 2601){   // Do something.}

.net 访问远程的MSSQL报System.AccessViolationException错误的解决方法

.net 访问远程的MSSQL报System.AccessViolationException错误的解决方法

访问远程的数据库时 报错,本地数据库正常

 

netsh winsock reset   --运行此命令,解决。

netsh winsock reset命令,作用是重置 Winsock 目录。如果一台机器上的Winsock协议配置有问题的话将会导致网络连接等问题,就需要用netsh winsock reset命令来重置Winsock目录借以恢复网络。这个命令可以重新初始化网络环境,以解决由于软件冲突、病毒原因造成的参数错误问题。 netsh是一个能够通过命令行操作几乎所有网络相关设置的接口,比如设置IP,DNS,网卡,无线网络等,Winsock是系统内部目录,Winsock是Windows网络编程接口,winsock工作在应用层,它提供与底层传输协议无关的高层数据传输编程接口,reset是对Winsock的重置操作。当执行完winsock的命令重启计算机后,需要重新配置IP。

Android json错误com.google.gson.JsonSyntaxException:java.lang.IllegalStateException

Android json错误com.google.gson.JsonSyntaxException:java.lang.IllegalStateException

我在解析json数据时遇到此错误

Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2

我无法找到解决方案.我的json数据是:

{
  "user": [
    {
      "email": "wijden@jerseyrest.com",
      "firstName": "Wijden",
      "id": "1",
      "lastName": "User"
    }, {
      "email": "user@jerseyrest.com",
      "firstName": "Sample",
      "id": "2",
      "lastName": "User"
    }, {
      "email": "ingenieur@jerseyrest.com",
      "firstName": "Ingenieur",
      "id": "3",
      "lastName": "User"
    }
  ]
}

这就是我做到的方式:

Type type = new Typetoken<List<WorkItem>>() { }.getType();
List<WorkItem> workitems = (List<WorkItem>) new Gson().fromJson(resultat, type);

如果你能帮助我解决问题,我将不胜感激.提前致谢

解决方法:

为了解析你的JSON,我创建了包装响应的类,即:

public class Response {
  @Serializedname("user")
  private List<User> userList;
  //getters and setters
}

和,

public class User{
  @Serializedname("id")
  private int id;
  @Serializedname("email")
  private String email;
  @Serializedname("firstName")
  private String firstName;
  @Serializedname("lastName")
  private String lastName;
  //getters and setters
}

然后,为了解析您的JSON响应,您只需要:

Gson gson = new Gson();
Response data = gson.fromJson(yourjsonString, Response.class);

然后,您可以非常轻松地访问您的数据,例如:

User user = data.getUserList.get(i);

注意:使用注释@Serializedname对于分离JSON响应中和应用程序中的字段名称很有意义,以便遵循Java命名约定…

android中的SQLException错误处理

android中的SQLException错误处理

嗨,在我的项目中,我需要处理异常,如重复值,空字段等.我想到了使用try catch方法

public void deleteRegisterID(Object object) {
    sqliteDatabase oDBLocal = this.getWritableDatabase();
    try {
        oDBLocal.execsql("delete from " + STRTABLE_REGISTER + " where " + KEY_ID
                + " = " + object + ";");
    }catch (sqlException msqlException) {
        Log.e("Loginerror","getproductData >>" + msqlException.toString());
        throw msqlException;
    }
}

我能够得到错误但我需要处理它并向用户发送一些消息再次输入所以我虽然在this的帮助下这样做

catch (sqlException msqlException)
    {
       switch (msqlException.getErrorCode ())
       {
          case 19:
             //some toast message to user.
             break;
          case 11:
             //some toast message to user.
             break;
          default:
             throw msqlException;
       }
     }

但是当我检查msqlException时,sqlException中没有getErrorCode()方法.但它在Android文档中有任何人可以帮助我

解决方法

首先,我想解释一下sqlException类.在Android中,您可以访问2个sqlException类,android.database.sqlException和java.sql.sqlException.您的链接有关于java.sql.sqlException类的说明.请检查 this链接,这将有关于android.database.sqlException类的信息您可能使用了android.database.sqlException类.我们在这个类中没有getErrorCode()方法.

温和的解决方案,我可以给你的问题.您可以使用以下实现来解决您的问题.

catch (sqlException msqlException) {
            if(msqlException instanceof sqliteConstraintException){
                //some toast message to user.
            }else if(msqlException instanceof sqliteDatatypeMismatchException) {
                //some toast message to user.
            }else{
                throw msqlException;
            }
        }

您可以从此link中的子类列表中选择任何子类

asp.net-mvc – 没有其他用户的DB上的DbUpdateConcurrencyException.解决方法失败,出现NullException错误

asp.net-mvc – 没有其他用户的DB上的DbUpdateConcurrencyException.解决方法失败,出现NullException错误

MVC / EF新手…我的MVC Web应用程序是首先使用数据库模型中的代码创建的,因为我已经有了数据库(sqlExpress)…

当我尝试将记录更新到数据库时,我收到以下错误:

Store update,insert,or delete statement affected an unexpected
number of rows (0). Entities may have been modified or deleted since
entities were loaded

使用从数据库实体框架模型首先使用代码生成的标准代码时出现此错误.很奇怪,因为我正在使用一台其他人无法访问的独立机器.

这是失败的代码:

if (ModelState.IsValid)
{
    db.Entry(tblPropGroup).State = EntityState.Modified;
    db.SaveChanges();
    return RedirectToAction("Index");
}

所以我写了下面的工作,一段时间完美无缺:

if (ModelState.IsValid)
{
db.Entry(_Prop).State = EntityState.Modified;
bool saveFailed;
do
{
 saveFailed = false;
 try
 {
 db.SaveChanges();
 }
 catch (dbupdateConcurrencyException ex)
 {
 saveFailed = true;
 // Update original values from the database 
 var entry = ex.Entries.Single();
 entry.OriginalValues.SetValues(entry.GetDatabaseValues());
 }
} while (saveFailed);

谁能解释为什么db.SaveChanges在没有其他用户的数据库上导致dbupdateConcurrencyException?如果我对数据进行任何更改,则没有任何区别.我有22个不同的表,我可以在这个程序中访问,如果没有这个解决方法,大约一半不会工作.

解决方法

我怀疑这与数据库上下文相关的竞争条件有关.

以下是一些答案:
side-effect of a feature called optimistic concurrency

Store update,or delete statement affected an unexpected number of rows (0) EntityFramework

这可能有所帮助.

最好使用:

using(DBContext context = new DBContext())
{
    //Entity code
}

处理您的上下文.

关于如何捕获特定的SqlException错误?应用程序如何捕捉sql语句执行中的错误信息?的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于.net 访问远程的MSSQL报System.AccessViolationException错误的解决方法、Android json错误com.google.gson.JsonSyntaxException:java.lang.IllegalStateException、android中的SQLException错误处理、asp.net-mvc – 没有其他用户的DB上的DbUpdateConcurrencyException.解决方法失败,出现NullException错误等相关知识的信息别忘了在本站进行查找喔。

本文标签: