我正在尝试使用SQLite作为我的存储空间.我已经使用nuget和using语句添加了引用dll.
我有
private void SetConnection()
{
sql_con = new SQLiteConnection
("Data Source=c:\\Dev\\MYApp.sqlite;Version=3;New=False;Compress=True;");
}
private void ExecuteQuery(string txtQuery)
{
SetConnection();
sql_con.Open();
sql_cmd = sql_con.CreateCommand();
sql_cmd.CommandText = txtQuery;
sql_cmd.ExecuteNonQuery();
sql_con.Close();
}
Run Code Online (Sandbox Code Playgroud)
我正在发送这样的查询文本
public void Create(Book book)
{
string txtSqlQuery = "INSERT INTO Book (Id, Title, Language, PublicationDate, Publisher, Edition, OfficialUrl, Description, EBookFormat) ";
txtSqlQuery += string.Format("VALUES (@{0},@{1},@{2},@{3},@{4},@{5},@{6},@{7},{8})",
book.Id, book.Title, book.Language, book.PublicationDate, book.Publisher, book.Edition, book.OfficialUrl, book.Description, book.EBookFormat);
try
{
ExecuteQuery(txtSqlQuery);
}
catch (Exception ex )
{
throw new Exception(ex.Message);
}
}
Run Code Online (Sandbox Code Playgroud)
我的数据库正确创建并传递了具有有效数据的书籍实例.但是在这行代码上执行查询总是抛出异常:
sql_cmd.ExecuteNonQuery(); …Run Code Online (Sandbox Code Playgroud) 我有类BookDTO表示将用于在客户端和服务之间交换数据的对象,其中服务是wcf服务具有以下属性
[Serializable]
[DataContract]
[KnownType(typeof(Book))]
public class BookDTO {...}
Run Code Online (Sandbox Code Playgroud)
这种装饰物体的正确(标准)方式是通过电线发送的吗?我见过的例子
[DataContract(NameSpace="somenamespace.DTO.Book")]
Run Code Online (Sandbox Code Playgroud)
正在[KnownType(typeof(Book))]这里redudant?
我忘了提到我已经介绍了DataMember属性,所以请忽略它.
我在这篇文章中读到他们正在使用依赖注入来在每个mvc请求上加载存储库实例.
我不确定我是否理解正确,但我目前在我的mvc应用程序中使用.UserRepository它实现了IUserRepository接口.此接口注入控制器构造函数
public class UserController : Controller
{
private IUserRepository repository;
public UserController(IUserRepository rep)
{ repository = rep; }
public UserController() : this(new UserRepository()) {}
}
Run Code Online (Sandbox Code Playgroud)
但我没有看到使用这个接口的任何好处(IUserRepository)我可以使用UserRepository没有接口.显然有人认为这是正确的方法(我已经在apress mvc4书上找到了它)我会请求有人详细说明为什么这是更好的方法而不是使用没有接口的存储库.
考虑到这一点,我会请任何人分享有关如何实现此方法的具体示例或链接(使用依赖注入来在每个mvc请求上加载存储库实例).
如果我有字符串,我想用星号替换该字符串中的最后一个字符.
我试过这个
var myString = "ABCDEFGH";
myString.ReplaceCharacter(mystring.Length - 1, 1, "*");
public static string ReplaceCharacter(this string str, int start, int length, string replaceWith_expression)
{
return str.Remove(start, length).Insert(start, replaceWith_expression);
}
Run Code Online (Sandbox Code Playgroud)
我试图使用此扩展方法,但这不起作用.为什么这不起作用?
在我的asp.net mvc4控制器中,我有两个动作方法
public ActionResult Projects()
Run Code Online (Sandbox Code Playgroud)
和
public ActionResult Projects(string s)
Run Code Online (Sandbox Code Playgroud)
在调试时我将字符串发送到第二种方法我得到的错误是当前请求在这两种方法之间是不明确的.
为什么这样,因为那些方法签名不同?
一个Book有Tag对象列表.使用linq我想选择任何标签名称包含指定过滤器的书籍列表.
string genre; // filter
List<Book> books = repository.GetBooks();
foreach(Book book in books.Where(x=>x.Tags.Any())) //I'm stuck here
Run Code Online (Sandbox Code Playgroud) 我想用firebird db测试精巧的微观orm,我很难接触到firebird.
Firebird服务器已启动并正在运行,数据库中填充了一些虚拟数据,并存储在c:\ mydatabases\test.fdb中
连接字符串是
<add name="testDatabase" connectionString="User=SYSDBA;
Password=XXX; Database=c:\mydatabases\test.fdb;
Data Source=127.0.0.1;" />
Run Code Online (Sandbox Code Playgroud)
在我的存储库中,我正在使用IDbConnection访问数据库
private IDbConnection db =
new SqlConnection(ConfigurationManager.ConnectionStrings["testDatabase"]
.ConnectionString);
Run Code Online (Sandbox Code Playgroud)
但是当我试图访问数据时抛出异常
System.Data.dll中发生了'System.Data.SqlClient.SqlException'类型的第一次机会异常
附加信息:建立与SQL Server的连接时发生与网络相关或特定于实例的错误.服务器未找到或无法访问.验证实例名称是否正确,以及SQL Server是否配置为允许远程连接.(提供者:命名管道提供程序,错误:40 - 无法打开与SQL Server的连接)
是否可以使用IDbConnection,firebird如果不是你的建议.
谢谢
一个简单的问题WCF服务正在运行,它可以通过Internet或LAN网络使用.由于两种方案都支持http,所以我应该只使用httpBasicBinding.当其他类型的绑定发生时,有人可以解释我吗?
我的服务目前正在运行
localhost:17722/Book.svc
Run Code Online (Sandbox Code Playgroud)
在尝试使用服务之前,我的客户端应用程序如何知道服务是否正在运行?
retreiving最后插入的id
我想从firebird数据库中检索最后插入的id.数据是succ.插入,触发器使用生成器插入ID.
我建议使用这种语法
var sql = "INSERT INTO ... VALUES ... " +
"RETURNING Id";
Run Code Online (Sandbox Code Playgroud)
其中RETURNINGId应该返回表Id.
我不知道如何存储到变量中.
int lastId = ...
Run Code Online (Sandbox Code Playgroud)