C# 无法连接到C中的本地数据库#

C# 无法连接到C中的本地数据库#,c#,visual-studio,ado.net,sql-server-ce,C#,Visual Studio,Ado.net,Sql Server Ce,因此,我有以下代码用于连接记录并将其插入数据库: string dbfile = "|DataDirectory|\\Databases\\Database.sdf"; SqlConnection connection = new SqlConnection("Data Source=" + dbfile); SqlCommand query = new SqlCommand("insert into Leggers values('" + leg

因此,我有以下代码用于连接记录并将其插入数据库:

string dbfile = "|DataDirectory|\\Databases\\Database.sdf";
            SqlConnection connection = new SqlConnection("Data Source=" + dbfile);
            SqlCommand query = new SqlCommand("insert into Leggers values('" + leggernummer + "','" + omschrijving + "')", connection);
            ** connection.Open(); **
            query.BeginExecuteNonQuery();

            connection.Close();
我的配置文件如下所示:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
    </configSections>
    <connectionStrings>
        <add name="connectionstring"
            connectionString="Data Source=|DataDirectory|\Databases\Database.sdf"
            providerName="Microsoft.SqlServerCe.Client.3.5" />
    </connectionStrings>
</configuration>
我不熟悉C#中的数据库,所以我不确定出了什么问题。我试着跟随教程,但他们都说了不同的话,所以很难弄清楚我到底应该做什么


谢谢

当使用
.sdf
文件(SQL ServerCompact Edition)时,您需要使用
SqlCeConnection
而不是
SqlConnection
(对完整的SQL Server有效):


另外:您应该尝试使用参数化的查询,而不仅仅是将SQL语句连接在一起。。。(研究“SQL注入攻击”…)

您可以通过SQL Server Management Studio连接到数据库吗?如果是,您使用了什么信息进行连接,并且连接后您的DB Visitsble是否可用?那DB叫什么名字?我想我们只需要在这里调试您的连接字符串……SQLEXPRESS服务实例正在运行吗?@MerlynMorgan Graham:我不确定SQL Server Management Studio是什么。我在VisualStudio中创建了数据库,并且连接在那里工作,我已经测试过了。DB的名称只是“数据库”。@kprobst:我在我的任务主机(或任何英文名称)中没有看到该服务@kprobst:它是一个.sdf文件=SQL Server Compact Edition不是SQL Server Expression它不识别SqlCeConnection和SqlCeCommand。我有以下使用指令:使用System.Data;使用System.Data.SqlClient;使用System.Data.OleDb;另外:该程序是一个离线应用程序,只有一个人会使用。所以我没有SQL注入的风险。好了,现在连接好了。但是,我的数据库没有使用我添加的新记录进行更新。或者它只是忽略添加的内容,因为我正在调试?(很抱歉这篇三重的文章,编辑太晚了)@Simon:仔细看看你的文件夹,你可能有两份.sdf(在source和\bin\debug中)
System.Data.SqlClient.SqlException was unhandled
  Message=A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)
  Source=.Net SqlClient Data Provider
  ErrorCode=-2146232060
  Class=20
  LineNumber=0
  Number=-1
  Server=""
  State=0
  StackTrace:
       at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
       at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()
       at System.Data.SqlClient.TdsParser.Connect(ServerInfo serverInfo, SqlInternalConnectionTds connHandler, Boolean ignoreSniOpenTimeout, Int64 timerExpire, Boolean encrypt, Boolean trustServerCert, Boolean integratedSecurity)
       at System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, Boolean ignoreSniOpenTimeout, TimeoutTimer timeout, SqlConnection owningObject)
       at System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo, String newPassword, Boolean redirectedUserInstance, SqlConnection owningObject, SqlConnectionString connectionOptions, TimeoutTimer timeout)
       at System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection owningObject, TimeoutTimer timeout, SqlConnectionString connectionOptions, String newPassword, Boolean redirectedUserInstance)
       at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, String newPassword, SqlConnection owningObject, Boolean redirectedUserInstance)
       at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection)
       at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnection owningConnection, DbConnectionPool pool, DbConnectionOptions options)
       at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject)
       at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject)
       at System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject)
       at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
       at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
       at System.Data.SqlClient.SqlConnection.Open()
       at Stockbeheer_Savenay.Forms.LeggerToevoegen.addItem(String leggernummer, String omschrijving) in C:\Users\Simon\Desktop\Stockbeheer Savenay\Stockbeheer Savenay\Forms\LeggerToevoegen.cs:line 59
       at Stockbeheer_Savenay.Forms.LeggerToevoegen.btnToevoegen_Click(Object sender, EventArgs e) in C:\Users\Simon\Desktop\Stockbeheer Savenay\Stockbeheer Savenay\Forms\LeggerToevoegen.cs:line 31
       at System.Windows.Forms.Control.OnClick(EventArgs e)
       at System.Windows.Forms.Button.OnClick(EventArgs e)
       at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
       at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
       at System.Windows.Forms.Control.WndProc(Message& m)
       at System.Windows.Forms.ButtonBase.WndProc(Message& m)
       at System.Windows.Forms.Button.WndProc(Message& m)
       at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
       at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
       at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
       at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
       at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
       at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
       at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
       at System.Windows.Forms.Application.Run(Form mainForm)
       at Stockbeheer_Savenay.Program.Main() in C:\Users\Simon\Desktop\Stockbeheer Savenay\Stockbeheer Savenay\Classes\Program.cs:line 18
       at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
       at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
       at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
       at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       at System.Threading.ThreadHelper.ThreadStart()
  InnerException: 
string dbfile = "|DataDirectory|\\Databases\\Database.sdf";

string insertStmt = "insert into Leggers values('" + leggernummer + "','" + omschrijving + "')";

using(SqlCeConnection connection = new SqlCeConnection("Data Source=" + dbfile))
using(SqlCeCommand query = new SqlCeCommand(insertStmt, connection))
{
    connection.Open();
    query.BeginExecuteNonQuery();
    connection.Close();
}