小编a C*_*CVn的帖子

从简单的Mono/C#应用程序读取SQLite3数据库?

我的F-Spot数据库有一段时间没有问题,但没有任何问题.然而,现在,我似乎在做; 我甚至无法启动F-Spot,因为它在启动时崩溃了.检查控制台,打破它的是一个UriFormatException消息"System.UriFormatException:URI方案必须以字母开头,并且必须包含字母,数字,'+',' - '或'.'之一.字符.".这是在Mono 2.4.4.0上运行,而不是Microsoft的运行时.

基本上,我试图找出哪些确切的数据行被破坏,所以我可以修复它们,或者提交针对F-Spot的错误报告.(我之前一直在干扰数据库文件,这可能会造成这样的麻烦 - 无论哪种方式,它看起来应该像处理那样更好地处理这样的事情,但是在这个时刻我更感兴趣修复数据的确切原因不是以稍微优雅的方式处理故障的确切原因.)数据库是SQLite3文件,并在命令行sqlite3应用程序中手动运行,我也可以同时选择表元数据作为数据表本身.然而,我System.ApplicationException: file is encrypted or is not a database从一个简单的测试应用程序中获得Mono.Data.SqliteClient.SqliteConnection.Open()的未处理异常,除了来自SQLite和Mono官方指南的复制粘贴之外别无其他.链接System.Data.dll和Mono.Data.SqliteClient.dll,我也在这里复制相关代码以确保完整性:

public static void Main(string[] args) {
   string connectionString = "URI=file:f-spot.photos.db";
   IDbConnection dbcon;
   dbcon = (IDbConnection) new SqliteConnection(connectionString);
   dbcon.Open();
   dbcon.Close();
   dbcon = null;
}
Run Code Online (Sandbox Code Playgroud)

数据库文件肯定存在,工作正常(sqlite3本身没有任何投诉).谷歌搜索给我很多页面比较各种小型数据库引擎,并提示该文件可能是SQLite2数据库.但是,AFAIK我的系统上没有SQLite2库,file特别声称该文件是"SQLite 3.x数据库".不仅如此,低于0.3.5的F-Spot版本需要SQLite 3,而我的版本为0.6.2,并且已经存在很长一段时间了.我是否尝试使用错误的API读取它,或者DSN是否错误?

任何有关尝试的建议都将受到赞赏.当然我可以使用sqlite3提取数据,将其保存到文本文件,然后解析这些数据,但这引入了另外几层不确定性,如果可能的话,通过使用与F-Spot尽可能接近的相同API,我真的很想避免.我可以访问数据.

c# sqlite mono

5
推荐指数
1
解决办法
2629
查看次数

如何一次操作发布解决方案中的所有数据库项目?

回到 VIsual Studio 2010,可以右键单击解决方案并选择“部署解决方案”,它会将所有数据库项目推送到各自配置的数据库服务器。

在 Visual Studio 2013 中,对于数据库项目,“发布”取代了之前“部署”的位置。

但是,我似乎无法找到一种方法来通过单个操作发布解决方案中的所有数据库项目。相反,有必要单独“发布”每个数据库项目。即使在配置管理器中将数据库项目设置为“部署”,“部署解决方案”对于包含数据库和 C# 项目混合的解决方案也根本不会执行任何操作。

Visual Studio 2013 中的数据库项目(.sqlproj 文件类型)是否有功能与 Visual Studio 2010 中的“部署解决方案”等效的功能?

database visual-studio-2013 sqlproj

5
推荐指数
0
解决办法
401
查看次数

HttpServletResponse.setStatus() 工作一次,再次调用时不执行任何操作 - 在 Java 8/Tomcat 9.0.0 和 Java 10/Tomcat 9.0.8 之间更改?

我有一个在 Tomcat 9 下运行的 Java servlet,作为正常流程的一部分,它会调用HttpServletResponse#setStatus()几次。

当使用 Java 8(1.8.0u144,Tomcat 报告为1.8.0_144-b01)在 Tomcat 9.0.0.M26 上运行时,效果很好。

当在带有 Java 10.0.1 的 Tomcat 9.0.8.0 上运行时(Tomcat 报告为10.0.1+10),似乎在响应对象上调用 setStatus() 实际上只会导致响应状态被设置一次,此后 HTTP 状态将无法再设置改变了。然而,通过 HttpServletResponse#setHeader() 发送到客户端的其他标头似乎不受此影响;即使 setStatus() 不再执行任何操作后,setHeader() 也会成功添加标头。没有发送任何可能导致 HTTP 标头终止的中间输出数据。

这是一个最小的工作示例:

package org.example;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/HttpResponseStatusTestServlet")
public class HttpResponseStatusTestServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.getWriter().append("Testing ");
        response.setStatus(505);
        response.setStatus(506);
        response.getWriter()
            .append("Served at: ") …
Run Code Online (Sandbox Code Playgroud)

java tomcat servlets

5
推荐指数
1
解决办法
7330
查看次数

在IndexOutOfBoundsException异常上返回什么?

我有以下方法

private ArrayList<User> allUsers = new ArrayList<User>();

public User getUser(int index) {
    try {
        return allUsers.get(index);
    }
    catch(IndexOutOfBoundsException e) {
        // What should I return here?? Say that you want index 0 and no User
        // exists in the ArrayList allUsers, what should I then return? The
        // method needs a User to be returned 
    }
}
Run Code Online (Sandbox Code Playgroud)

而且我不确定该怎么做,我确信这是一个简单的解决方法,但我应该在catch块中返回什么?Eclipse抱怨User必须返回.

java

4
推荐指数
2
解决办法
8153
查看次数

为什么线程按此顺序执行?

练习多线程java示例,这里我在类A中创建线程A,在类B中创建线程B.现在通过创建对象来启动这两个线程.我放置代码

  package com.sri.thread;

class A extends Thread
{
    public void run()
    {
        System.out.println("Thread A");
        for(int i=1;i<=5;i++)
        {
            System.out.println("From thread A i = " + i);
        }
        System.out.println("Exit from A");

    }
}
class B extends Thread
{
    public void run()
    {
        System.out.println("Thread B");
        for(int i=1;i<=5;i++)
        {
            System.out.println("From thread B i = " + i);
        }
        System.out.println("Exit from B");
    }
}
public class Thread_Class
{
    public static void main(String[] args)
    {
        new A().start();    //creating A class thread object and calling run method …
Run Code Online (Sandbox Code Playgroud)

java multithreading

4
推荐指数
1
解决办法
740
查看次数

为变量设置值时为什么要使用位移?

我将通过HashMapJava中的类的源代码,并发现变量被初始化为

static final int MAXIMUM_CAPACITY = 1 << 30;
Run Code Online (Sandbox Code Playgroud)

为什么不只是

static final int MAXIMUM_CAPACITY = 1073741824;
Run Code Online (Sandbox Code Playgroud)

这意味着同样的事情.是否有任何性能原因或仅仅是一个奇特的东西?

java hashmap

4
推荐指数
1
解决办法
78
查看次数

如何解决VS2013错误SQL71501:过程X有一个未解析的程序集Y引用?

作为我们从Visual Studio 2010升级到2013的努力的一部分,我正在查看需要EXTERNAL访问的几个SQL Server CLR存储过程,并且为此目的将在单独的程序集中隔离.我几乎没有任何东西可以轻松地建造,但这给了我一些麻烦.

由于所讨论的程序集使用新.sqlproj项目类型显然根本不喜欢的Web引用,并且能够继续,我们决定使用VS2010 SP1单独构建该程序集并引用已编译的DLL.组件本身构建得很好,VS2013没有关于引用本身的抱怨.

以下是SQL CLR SP的外观(请不要问我地球上分号最后在那里做了什么):

using System;
using System.Data;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using Microsoft.SqlServer.Server;
using System.IO;
using System.Text;


public partial class StoredProcedures
{
    [Microsoft.SqlServer.Server.SqlProcedure]
    public static int SQLCLR1(
        SqlString in1,
        SqlString in2,
        SqlString in3,
        SqlString in4,
        SqlString in5
        )
    {
        // ... code elided ... //
    }
};
Run Code Online (Sandbox Code Playgroud)

而SQL方面:

CREATE PROCEDURE [dbo].[SQLCLR1]
    @in1 [nvarchar](4000),
    @in2 [nvarchar](4000),
    @in3 [nvarchar](4000),
    @in4 [nvarchar](4000),
    @in5 [nvarchar](4000)
WITH EXECUTE AS CALLER
AS
EXTERNAL NAME [External].[StoredProcedures].[SQLCLR1] …
Run Code Online (Sandbox Code Playgroud)

sql-server sqlclr visual-studio visual-studio-2013

4
推荐指数
1
解决办法
8563
查看次数

为什么 GCC 声称 Clock_gettime() 隐式声明,但预处理器对相关宏非常满意?

我正在尝试尽可能准确地测量操作所花费的时间。我的研究让我相信clock_gettime()和朋友就是我想要的。

\n\n

然而,我一生都无法让它发挥作用。考虑这个看似微不足道的例子:

\n\n
#include <time.h>\n#include <unistd.h>\n\nint main(void)\n{\n    struct timespec t;\n    clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &t);\n    return 0;\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

如果我通过预处理器运行它,一切看起来都很好:

\n\n
$ cpp time.c | tail -n10\n# 1163 "/usr/include/unistd.h" 3 4\n\n# 3 "time.c" 2\n\nint main(void)\n{\n struct timespec t;\n clock_gettime(2, &t);\n return 0;\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

但是,如果我尝试编译预处理代码,它不会:

\n\n
$ cpp time.c > time-prep.c\n$ cc -o time -Wall -std=c11 -lrt time-prep.c\n/tmp/user/1000/cc00SdhB.o: In function `main\':\ntime-prep.c:(.text+0x15): undefined reference to `clock_gettime\'\ncollect2: error: ld returned 1 exit status\n$ \n
Run Code Online (Sandbox Code Playgroud)\n\n

如果我尝试编译原始版本,它并不会变得更好:

\n\n
$ cc -o time -Wall -std=c11 -lrt …
Run Code Online (Sandbox Code Playgroud)

c time gcc glibc

4
推荐指数
1
解决办法
2780
查看次数

检查 SQL SERVER 中的列是否为 NULL

我在 SQL Server 2008 R2 中有一个过程,我想将数据输入到 vol_Hours 列并在它之前检查它如果它不为空然后加上它在列中的旧数据的条目,如果它是空然后将条目添加到没有加上 NULL 值的列。我不能添加 2+NULL,因为它是 = NULL。我的代码是:

    create procedure updateVolunteerHours 
    @vol_ID int, @vol_Hours int
    As
    if vol_Hours is NULL 
    -- vol_Hours it is the Column Name
    Update Personal_Information set vol_Hours = @vol_Hours where vol_ID = @vol_ID
    else
    Update Personal_Information set vol_Hours = @vol_Hours + vol_Hours where vol_ID = @vol_ID
Run Code Online (Sandbox Code Playgroud)

sql-server-2008-r2

3
推荐指数
1
解决办法
1万
查看次数

Linux套接字编程中接受后的错误号

accept()手册页RETURN VALUE部分所述:

错误处理
Linux accept()(和accept4())将新套接字上已经挂起的网络错误作为错误代码从accept(). 此行为不同于其他 BSD 套接字实现。为了可靠运行,应用程序应该检测为协议定义的网络错误,accept()EAGAIN通过重试来处理它们。在TCP / IP的情况下,这些都是 ENETDOWNEPROTOENOPROTOOPTEHOSTDOWNENONETEHOSTUNREACHEOPNOTSUPP,和ENETUNREACH

这是否意味着必须errnoaccept()返回之后和检查 的返回值之前检查 的值accept()?如果是,如果errno设置,必须采取哪些步骤?

这是我的代码处理片段accept()

newsockfd = accept(sockfd, (struct sockaddr *) &cli_addr, &clilen);
if((errno == ENETDOWN || errno == EPROTO || errno == ENOPROTOOPT || errno == EHOSTDOWN ||
    errno == ENONET …
Run Code Online (Sandbox Code Playgroud)

c sockets linux error-handling

3
推荐指数
1
解决办法
6164
查看次数