2012-05-03 258 views
0

有,我用新的数据传递到数据库的代码(火鸟):C#数据添加到Firebird数据库

FbConnection fbCon = new FbConnection(csb.ToString()); 
FbDataAdapter fbDAdapter = new FbDataAdapter("SELECT ID,name,score FROM players",fbCon); 
FbCommandBuilder Cmd = new FbCommandBuilder(fbDAdapter); 
DataSet DSet = new DataSet(); 
fbDAdapter.Fill(DSet); 
DataRow rw = DSet.Tables[0].NewRow(); 
rw["ID"] = zID + 1; 
rw["name"] = var; 
rw["score"] = score; 
DSet.Tables[0].Rows.Add(rw); 
fbDAdapter.Update(DSet); 

或许您可以推荐更好的算法,或者这是相当不错的?

回答

2

这样就OK了,您使用的命令生成器,对于做了很多的工作,你可以简单地翻译上面的代码为插入命令直接对数据库表来执行:

FbConnection fbCon = new FbConnection(csb.ToString()); 
    FbCommand fbCom = new FbCommand("INSERT INTO players(ID,name,score) VALUES (@id,@name,@score)", fbCon); 
    fbCom.Parameters.AddWithValue("id", zID + 1); 
    fbCom.Parameters.AddWithValue("name", var); 
    fbCom.Parameters.AddWithValue("score", score); 
    fbCom.ExecuteNonQuery(); 

在这样你就可以避免命令生成器和数据加载到数据表,应该是相当快......

+0

好吧,addisional问题,女巫方法更好地使用,如果我想检查数据库中是否已经存在数据库? 在我的例子中,我知道如何做到这一点。 如何检查你的存在? – Bublik

0

这是打火机数据库:

 FbConnectionStringBuilder csb = new FbConnectionStringBuilder(); 
     csb.ServerType = FbServerType.Default; 
     csb.Database = Settings.Default.LastBDPath; 
     csb.Password = Settings.Default.LastBDPassword; //   "masterkey"; 
     csb.UserID = Settings.Default.LastBDUser;  //   "SYSDBA"; 
     connection = new FbConnection(csb.ToString()); 

     connection.Open(); 

     string scriptLine = string.Format("INSERT INTO TABLE (Id, Name, Score) values ({0}, '{1}', {2}", zId+1, var, score) ; 
     FBCommand command = new FbCommand(scriptline, connection); 
     command.ExecuteNonQuery(); 

对于一个选择:

string sql = string.Format("select * from table where name='{0}';", your_name); 

FbCommand command = new FbCommand(sql), connection); 
FbDataReader reader = command.ExecuteReader(); 
while (reader.Read()) 
{ 
    for (int i=0; i<reader.FieldCount; i++) 
    { 
     objects[i].Add(reader.GetValue(i)); 
    } 
} 
+0

哦,thnx,是否有任何方法来检查数据库中是否存在值,例如名称? – Bublik

+0

当然,你应该使用sql select,如果读者返回它存在的行 – Blau