我用SQL CE数据库制作了一个小WPF应用程序.
我使用LINQ构建了以下代码,以便从数据库中获取数据,这非常简单.所以我认为"这必须是LINQ-to-SQL".
然后我做了"添加项目"并添加了一个"LINQ-to-SQL类".dbml文件,将我的表拖到对象关系设计器上,但它说,"所选对象使用不受支持的数据提供程序."
那么我质疑下面的代码是否实际上是LINQ-to-SQL,因为它确实允许我从我的SQL CE数据库文件中访问数据,但是正式的"LINQ-to-SQL"似乎不支持SQL CE.
那么下面的"LINQ-to-SQL"是不是?
using System.Linq;
using System.Data.Linq;
using System.Data.Linq.Mapping;
using System.Windows;
namespace TestLinq22
{
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
MainDB db = new MainDB(@"Data Source=App_Data\Main.sdf");
var customers = from c in db.Customers
select new {c.FirstName, c.LastName};
TheListBox.ItemsSource = customers;
}
}
[Database(Name = "MainDB")]
public class MainDB : DataContext
{
public MainDB(string connection) : base(connection) { }
public Table<Customers> Customers;
}
[Table(Name = "Customers")]
public class Customers
{
[Column(DbType …Run Code Online (Sandbox Code Playgroud) 我们有一个用C#编写的.NET 3.5 SP1应用程序,它将数据存储在SQL CE 3.5数据库中.我们还需要从传统的VB6应用程序访问(只读)这些数据.
我不知道这是否可能.我能想到有几种解决这个问题的方法.
1)我已阅读有关ADOCE Connections的信息,但这似乎只是嵌入式Visual Basic的一个选项
2)我似乎无法使用ADODB.Connection对象进行连接工作
Dim MyConnObj As New ADODB.Connection
' Microsoft.SQLSERVER.CE.OLEDB.3.5
' Microsoft.SQLSERVER.MOBILE.OLEDB.3.0
MyConnObj.ConnectionString = "Provider=SQLOLEDB;Data Source=c:\test.sdf"
MyConnObj.Open
Run Code Online (Sandbox Code Playgroud)
也许这只是提供商的糟糕选择?我还尝试了上面显示为注释的提供程序和不同的连接字符串,但无济于事.这两个提供程序都没有安装在我的开发计算机上,也不会安装在我客户的计算机上.
3)也许有一种方法可以使用像ODBC这样更通用的方法?但我相信这会导致设置/部署工作,对吧?
有没有人有这种情况的经验?如你所见,我真的在寻找一些好的起点.我也接受这样的答案,"只要它们带有一些指导方向,这就是简单的死亡,你也是如此";-)
我阅读了几个有相互矛盾观点的文档:这篇文章说你不能在多用户环境中使用它:http: //www.pluralsight-training.net/community/blogs/jimw/archive/2007/02/18/46141. ASPX
维基百科说:SQL CE运行时调解对.sdf文件的并发多用户访问.
哪一个是正确的?
我的方案如下:我想在WPF中编写一个数据库应用程序,我喜欢使用LINQ to SQL.我已经有一个MS Access数据库,里面有一些数据,应该导入SQL CE数据库.
我不介意使用Access数据库(MDB)作为其数据库引擎,但据我所知,LINQ to SQL不能与Access数据库一起工作(我是对的吗?)所以我决定使用SQL CE
两个或更多用户可能通过网络打开应用程序并使用它.所以我需要一种方法来确保如果两个或更多用户打开数据库并写入它(不同的记录)它不会崩溃.这种情况的最佳选择是什么?
我在SQL Server 2008中有一个数据库.我想用CD部署我的软件.我想给最终用户2个选择:从CD使用并安装它.
当最终用户选择"从CD使用"时,我不想安装程序.如何在不安装的情况下执行程序?
请帮我解决这个问题
感谢您的关注.该程序在MS visual studio 2010中以C#编码.数据库管理系统是MS Sql Server 2008
我试图使用下面的代码插入数据库,但是,每次我收到错误:
日期格式中存在语法错误.[表达式= @DOB]
我已经尝试了几乎所有日期格式,tolongdate,toshortdate等,无论我使用什么,这个错误显示.
数据库列格式是datetime.我出错的任何想法?
码:
' Insert New User - Create Connection
Dim sqlConn As New SqlCeConnection(My.Settings.CompDbConnectionString)
' Open Connection
sqlConn.Open()
' Query DB
Dim sqlComm As New SqlCeCommand("INSERT INTO Profiles(Title, FirstName, LastName, DOB) VALUES(@Title, '@FirstName', '@LastName', '@DOB')", sqlConn)
' Add Parameters
sqlComm.Parameters.Add(New SqlCeParameter("@Title", SqlDbType.NVarChar)).Value = ComboTitle.SelectedItem.ToString()
sqlComm.Parameters.Add(New SqlCeParameter("@FirstName", SqlDbType.NVarChar)).Value = txtFirstName.Text
sqlComm.Parameters.Add(New SqlCeParameter("@LastName", SqlDbType.NVarChar)).Value = txtLastName.Text
sqlComm.Parameters.Add(New SqlCeParameter("@DOB", SqlDbType.DateTime)).Value = DteDOB.Value.ToUniversalTime
' Insert Into Database
Try
sqlComm.ExecuteNonQuery()
Catch ex As Exception
MessageBox.Show("Failed To Update Your Details:" …Run Code Online (Sandbox Code Playgroud) 尝试替换表的所有记录中的列的字符,
想用''改变'_'
任何片段怎么做?
备注:
Nvarchar我是VB.net的新手并创建一个应用程序,以便用户需要登录用户名和密码.
我正在使用SQL Server Compact Edition数据库.
这是我完美的代码: -
Imports System.Data.SqlClient
Imports System.Data.SqlServerCe
Public Class frm_edit_patient
Dim con As New SqlCeConnection
Try
Dim SQLquery As String
Dim da As SqlCeDataAdapter
Dim ds As New DataSet
Dim myConString As String = My.Settings.Database1ConnectionString
con.ConnectionString = myConString
MsgBox("Database is now open")
MessageBox.Show("connected")
Catch ex As Exception
MessageBox.Show(ex.ToString)
End Try
End Sub
Run Code Online (Sandbox Code Playgroud)
上面的代码工作正常,并告诉我 connected
但是当我添加这段代码时
SQLquery = "SELECT id FROM user where username=John Doe"
da = New SqlCeDataAdapter(SQLquery, con)
da = New SqlCeDataAdapter(SQLquery, con)
da.Fill(ds, "db1") …Run Code Online (Sandbox Code Playgroud) 我正在尝试在catch方法中编写一个if-else块,但是当我得到错误时"并非所有代码路径都返回int类型".
本质上,我正在编写一个将UserName和Password保存到Sql CE数据库的方法,我想测试一个特定的错误.(UserName已存在.)UserName列是唯一的,因此它将可靠地抛出带有NativeError = 25016的SqlCeException.我想显示带有错误消息的内容,否则以更通用的方式处理其他异常.
我的代码是:
try
{
//insert command (This is where the duplicate column error is thrown)
//Select @@Identity & Return it
}
catch (SqlCeException ex)
{
if (ex.NativeError == 25016)
MessageBox.Show("Username already in use.");
else
//whatever
}
Run Code Online (Sandbox Code Playgroud)
我试过显示一个不同的,更通用的消息,并获得无返回错误.我已经尝试抛出一个新的异常并在另一个块中捕获它.同样的错误.我试过返回-1(作为一种标志值).同样的错误.
对于这种特殊情况,似乎没有比SqlCeException更具体的错误(虽然我刚刚失败了我的debug-fu).
任何创造性的解决方案?最糟糕的情况是,我会编写一个方法,在调用此方法之前检查DB是否有重复的用户名.
我是C#的新手,正在开发一个与本地数据库(SQL Compact 3.5)通信的应用程序.运行标准的select语句我没问题 - 但是当把它转换成C#时,我有点迷失了.
到目前为止我所拥有的是一个'删除'查询,删除所有名为'Master'的行.现在我已经知道我确实需要在删除它们之前获取这些行的ID(出于数据库完整性目的).运行标准选择查询没有问题 - 我的问题是从SQL CE中选择一行到C#应用程序(使用数组或数据表或任何最合乎逻辑/方便的行).
这就是我现在所拥有的,但它只返回一个值,而不是选择:
string sql = "select listid from list where ShortDesc='Master'";
SqlCeCommand cmdGetOldMasterId = new SqlCeCommand(sql, DbConnection.ceConnection);
int oldKey = (int)cmdGetOldMasterId.ExecuteScalar();
Console.WriteLine("Old ID: " + oldKey);
Run Code Online (Sandbox Code Playgroud)
我需要能够在每个返回的行上执行foreach {}循环.有什么想法我怎么能在C#中做到这一点?
我有一个奇怪的问题.我使用vs2012连接到SQL Server CE并执行一些插入查询.
public void EstablishConnection()
{
connection = new SqlCeConnection("Data Source=DataDump.sdf;Persist Security Info=False;");
try
{
connection.Open();
Console.WriteLine("Connection Successful");
}
catch (Exception exception)
{
Console.WriteLine(exception.Message);
}
}
public void AddRecord(string link,string content)
{
int num = 0;
var command = new SqlCeCommand("INSERT INTO Webpages(Link,Data) VALUES('"+link+"','"+content+"');",connection);
num = command.ExecuteNonQuery();
Console.WriteLine("Command Successful rows affected"+num);
var cmd2 = new SqlCeCommand("SELECT * FROM Webpages",connection);
SqlCeDataReader reader = cmd2.ExecuteReader();
while (reader.Read())
{
Console.WriteLine(reader[0]);
Console.WriteLine(reader[1]);
}
}
Run Code Online (Sandbox Code Playgroud)
但是我遇到的问题是,一旦VS关闭,之后我打开它来显示数据,数据就会消失,因为它从未保存过
当它清楚然后执行查询时,这怎么可能?
sql-server-ce ×10
c# ×6
sql ×4
.net ×2
database ×1
legacy ×1
linq-to-sql ×1
multi-user ×1
t-sql ×1
vb.net ×1
vb.net-2010 ×1
vb6 ×1