我试过了
select top 1 * from tbl
select top(1) * from tbl
select * from tbl limit 1
Run Code Online (Sandbox Code Playgroud)
没有任何效果.
SQL Server Compact Edition是否支持获取前x行?
我正在使用Entity Framework 4.1并尝试连接到MVC Web应用程序内的新SQLServerCE 4.0数据库.我正在使用此代码
Database.DefaultConnectionFactory = new SqlCeConnectionFactory("System.Data.SqlServerCe.4.0", "|DataDirectory|", "test.sdf");
Run Code Online (Sandbox Code Playgroud)
它引发了这个例外:
初始化字符串的格式不符合从索引86开始的规范.
这段代码出了什么问题?
如果我使用
Database.DefaultConnectionFactory = new SqlCeConnectionFactory("System.Data.SqlServerCe.4.0")
Run Code Online (Sandbox Code Playgroud)
它工作并创建一个数据库,其名称与我的程序集名称相匹配.
我正在开发一个Windows移动应用程序.现在我只是测试它可以正确查询本地SQL Server CE数据库.它工作正常,直到我把一个WHERE语句.
这是我的代码:
private void buttonStart_Click(object sender, EventArgs e)
{
System.Data.SqlServerCe.SqlCeConnection conn = new System.Data.SqlServerCe.SqlCeConnection(
("Data Source=" + (System.IO.Path.Combine(System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase), "ElectricReading.sdf") + ";Max Database Size=2047")));
try
{
// Connect to the local database
conn.Open();
System.Data.SqlServerCe.SqlCeCommand cmd = conn.CreateCommand();
SqlCeParameter param = new SqlCeParameter();
param.ParameterName = "@Barcode";
param.Value = "%" + textBarcode.Text.Trim() + "%";
// Insert a row
cmd.CommandText = "SELECT * FROM Main2 WHERE Reading LIKE @Barcode";
cmd.Parameters.Add(param);
cmd.ExecuteNonQuery();
DataTable data = new DataTable();
using (SqlCeDataReader reader = cmd.ExecuteReader())
{ …Run Code Online (Sandbox Code Playgroud) 我有一个从SQL Server Compact数据库中提取数据的方法:
// Open the same connection with the same connection string.
using (SqlCeConnection con = new SqlCeConnection(DatabaseControl.conString))
{
con.Open();
// Read specific values in the table.
using (SqlCeCommand com = new SqlCeCommand("SELECT Result FROM CpuResults WHERE Date = @date", con))
{
List<float> results = new List<float>();
com.Parameters.AddWithValue("date", Form1.date);
SqlCeDataReader reader = com.ExecuteReader();
while (reader.Read())
{
float resultsoutput = reader.GetInt32(0);
results.Add(resultsoutput);
}
Run Code Online (Sandbox Code Playgroud)
cpuResults上"Result"列中结果的"type"定义为Real.我试图将这些数据转换为浮点格式,因为Result列中的数据是例如0.02和1.23等.虽然当我运行我的方法时,我得到:
指定演员表无效.
如果我将列的数据类型更改Result为int,则不会发生此问题.
我在SQL Server CE中有一个数据库.将不同计算机的多个应用程序连接到数据库时会抛出异常.
这是例外:
存在文件共享违规.不同的进程可能正在使用该文件.异常类型是"SqlCeException".
这是我的连接字符串:
Data Source=\\server\ProductionDB\ProductionControl.sdf;File Mode=Read Write; Max Database Size = 4000
Run Code Online (Sandbox Code Playgroud)
SQL Server CE的版本是3.5 SP2
我正在尝试继续我的实体框架+测试经验.我在NUnit中编写了测试,删除表,创建一个新的数据库,在测试所需的表中创建行,进行测试,然后重复.
关于两种不同的测试策略有一篇很好的帖子,它解释了测试的一些缺点Effort(在内存数据库中).无论如何,我确实非常喜欢对实际数据库进行测试,因为我可以验证真实数据库以验证数据库中是否以及如何结束.
然后我遇到了这篇文章,在那里我可以读到我应该/可能有一个不同的数据库服务器用于我的应用程序和我的测试.例如,应用程序针对SQL Server运行,而测试针对SQL Server CE运行.
我现在有几个可用于SQL Server Express的工作集成测试.我的应用程序在相同的连接字符串上运行,针对同一数据库服务器实例.
这是不明智的吗?
从长远来看,我有麻烦吗?
任何人都可以确认并解释是否需要/建议为应用程序(SQL Server)和集成测试(SQL Server CE)使用不同的数据库服务器?
非常感谢提前.
该InitializeDatabaseConnection方法的文档说,我们可以用SQLCE(SQL Server精简4.0本地数据库)使用MVC 4"互联网"模板的生成会员功能.
我之前已经多次使用过这个模板,并且在我没有弄乱任何东西时只是使用了我们第一次注册用户时实体框架生成的localDb(默认).
我的要求是将默认情况下生成的成员资格表生成到2012 localDb数据库中,而不是生成到SQLCE数据库中.但是,我得到以下内容:
例外:无法找到请求的.Net Framework数据提供程序.它可能没有安装.
要做到这一点,我们只需:
~/App_Data/文件夹(右键单击该文件夹,然后选择添加 - > SQL Server Compact 4.0本地数据库).<add name="ceEntities")的名称~/Filters/InitializeSimpleMembershipAttribute类中找到以下代码行:WebSecurity.InitializeDatabaseConnection("ceEntities", "UserProfile", "UserId", "UserName", autoCreateTables: true);到目前为止,代码编译并运行正常,但是当在~/Filters/InitializeSimpleMembershipAttribute类中运行以下代码行时:
WebSecurity.InitializeDatabaseConnection("ceEntities", "UserProfile", "UserId", "UserName", autoCreateTables: true);
Run Code Online (Sandbox Code Playgroud)
捕获此异常: 无法找到请求的.Net Framework数据提供程序.它可能没有安装.
当我们将此代码添加到web.config时,这显然是修复的:
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlCeConnectionFactory, EntityFramework">
<parameters>
<parameter value="System.Data.SqlServerCe.4.0" /> …Run Code Online (Sandbox Code Playgroud) asp.net-membership sql-server-ce asp.net-mvc-4 entity-framework-5
我正在尝试使用我的winform连接.sdf文件.这是我想要做的:
SqlConnection con = new SqlConnection();
con.ConnectionString=@"Data Source=D:\TestWinform\MyDB.sdf;Persist Security Info=True";
SqlCommand cmd = new SqlCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = "insert into User(Name) values('" + txt.Text + "')";
cmd.Connection = con;
con.Open(); // giving exception in this line
cmd.ExecuteNonQuery();
con.Close();
Run Code Online (Sandbox Code Playgroud)
但我面临一个问题,就是con.Open()它给出了这个例外
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 …Run Code Online (Sandbox Code Playgroud) 我有很多类似的查询可以工作,我不知道为什么这个不会:
我一跑完就得到:
System.Data.SqlServerCe.dll中发生未处理的"System.Data.SqlServerCe.SqlCeException"类型异常
......上 command.ExecuteNonQuery();
有任何明显的错误吗?
public void BorrowMovie(int memberCardNumber)
{
string connectionString = @"Data Source=|DataDirectory|\VideoStoreDB.sdf";
SqlCeConnection connection = new SqlCeConnection(connectionString);
connection.Open();
SqlCeCommand command = new SqlCeCommand(
"UPDATE Customer SET NumberBorrowedMovies = NumberBorrowedMovies+1 " +
"WHERE MemberCardNR = @mcn)", connection);
command.Parameters.AddWithValue("@mcn", memberCardNumber);
command.ExecuteNonQuery();
connection.Close();
Console.WriteLine("Movie was borrowed!");
Console.ReadLine();
}
Run Code Online (Sandbox Code Playgroud) 使用实体框架SQL-Server-CE我创建了一个这样的表:
class Era {
public long Id { get; set; }
[Index(IsUnique=true), Required]
public long Code { get; set; }
public string Name { get; set; }
public long StartDate { get; set; }
public long EndDate { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
每当我尝试使用Entity Framework插入其中时,将忽略Id该Era对象的字段并Id插入自动递增.
如何使Id字段不使用自动递增的值,而是使用给定的值,最好使用注释.
sql-server-ce ×10
c# ×7
sql ×3
.net ×2
exception ×1
limit ×1
sql-server ×1
testing ×1
where-clause ×1
winforms ×1