2014-05-03 66 views
-1

我使用的SQLite数据库SQLite的要在Windows Phone 7的 我使用Community.CsharpSqlite.Wp第三方DLL无法插入硬编码值在WP7

我创建客户表具有像ID,姓名字段,电子邮件,说明

public class Customer 
{ 
    public int ID { get; set; } 
    public string Name { get; set; } 
    public string Email { get; set; } 
    public string Desc { get; set; } 
    public Customer() { } 
    public Customer(int Id, string name, string email, string desc) 
    { 
     ID = Id; 
     Name = name; 
     Email = email; 
     Desc = desc; 
    }  
} 

和我的INSERT语句如下按钮点击

 private void btnAdd_Click(object sender, RoutedEventArgs e) 
    { 

     string strInsert = " Insert into Customer (Name,Email,Desc) values(@Name,@Email,@Desc)"; 

     Customer tst = new Customer 
       { 
        Name = "Name " + i, 
        Email = Name + "@" + "aaa.com", 
        Desc = "Desc for " + i 
       }; 
     rec = (Application.Current as App).db.Insert < Customer>(tst,strInsert); 

    } 

此代码工作正常..值将被插入到数据B酶。

但是,如果我硬编码值就像

“插入到客户(名称,电子邮件,DESC)VALUES( 'ABCD', '[email protected]', 'DESCRI')”

和我的代码改变这样的

private void btnAdd_Click(object sender, RoutedEventArgs e) 
{ 
    Customer tst = new Customer();    
    string strInsert = " Insert into Customer (Name,Email,Desc) values ('ABCD','[email protected]','DESCRI')";   
    rec = (Application.Current as App).db.Insert < Customer>(tst,strInsert); 
} 

我得到错误“插入失败:绑定或列索引超出范围” 在DBHelper.cs

+0

我删除@ gmail.com和测试,但仍同样的错误 – Mahesh

+0

你需要调用一个db.Execute方法或其他东西。你意识到你问一个关于代码的问题实际上不在你的问题中。 (); – rene

+0

public int Insert (T obj,string statement)其中T:new() { 尝试 { Open(); SQLiteCommand cmd = db.CreateCommand(statement); int rec = cmd.ExecuteNonQuery(obj); return rec; } catch(SQLiteException ex) System.Diagnostics.Debug.WriteLine(“Insert failed:”+ ex.Message);投掷前; } }这是包装代码iam使用的是DBHelper.cs中的插入方法 – Mahesh

回答

0

要调用一个泛型重载ŧ帽子拿一个东西。从该对象/类型我假设帮助器创建参数,需要在实际的sql语句中匹配参数占位符。

如果要执行不具有或需要的参数使用不带宾语的过载,例如SqliteCommand:

cmd.ExecuteNonQuery();