Csharp/C#教程:在C#中执行SQL语句?分享


在C#中执行SQL语句?

嘿家伙我想执行我的SQL语句,但我有synatx的麻烦,有人可以帮我理解我做错了吗?

谢谢,阿什。

public void AddToDatabase(string[] WordArray, int Good, int Bad, int Remove) { for (int WordCount = 0; WordCount < WordArray.Length; WordCount++) { string sSQL = "INSERT INTO WordDef (Word, Good, Bad, Remove) VALUES (" + WordArray[WordCount] + ", " + Good + ", " + Bad + ", " + Remove + ")"; Debug.Print(sSQL); //Private m_recordset As ADODB.Recordset //Private m_connection As ADODB.Connection ADODB.Recordset RS; ADODB.Connection CN ; CN = new ADODB.Connection(); RS = new ADODB.Recordset(); CN.CursorLocation = ADODB.CursorLocationEnum.adUseClient; CN.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=doom_calc_dict.mdb;jet OLEDB:database"; CN.Open(CN.ConnectionString,"","",0); object dummy = Type.Missing; CN.Execute(sSQL,out dummy,0); RS.Close(); CN.Close(); //string sSQL = "SELECT Word FROM WordDef WHERE Word='" + WordArray[WordCount] + "'"; DatabaseTools.LoadDataFromDatabase(sSQL); //DatabaseTools.LoadDataFromDatabase(sSQL); } } 

您需要解决的最重要的事情是使用查询参数而不是动态构建字符串。 这将改善性能,维护和安全性。

此外,您希望使用较新的强类型ADO.Net对象。 确保为System.Data.OleDb添加using指令。

请注意此代码中的using语句。 完成后,他们将确保您的连接已关闭。 这很重要,因为数据库连接是有限的非托管资源。

最后,你并没有在代码中使用数组。 您真正关心的是能够迭代一组单词,因此您希望接受IEnumerable而不是数组。 不要担心:如果您需要传递数组,则此函数将接受数组作为参数。

 public void AddToDatabase(IEnumerable Words, int Good, int Bad, int Remove) { string sql = "INSERT INTO WordDef (Word, Good, Bad, Remove) VALUES (@Word, @Good, @Bad, @Remove)"; using (OleDbConnection cn = new OleDbConnection("connection string here") ) using (OleDbCommand cmd = new OleDbCommand(sql, cn)) { cmd.Parameters.Add("@Word", OleDbType.VarChar); cmd.Parameters.Add("@Good", OleDbType.Integer).Value = Good; cmd.Parameters.Add("@Bad", OleDbType.Integer).Value = Bad; cmd.Parameters.Add("@Remove", OleDbType.Integer.Value = Remove; cn.Open(); foreach (string word in Words) { cmd.Parameters[0].Value = word; cmd.ExecuteNonQuery(); } } } 

还有一件事:在OleDb中使用查询参数时,务必确保按顺序添加它们。

更新:已修复在VS 2005 / .Net 2.0上工作(依赖于VS 2008function)。

一开始我会觉得我没有帮助。 但事实上,我正在努力帮助你,所以请你这样做。 你需要读这个和这个 STAT! 完成后,这里有一些很好的,干净的ADO.NET示例 。

试试这个(你应该尝试从你的应用程序外部运行SQL):

 string sSQL = "INSERT INTO WordDef (Word, Good, Bad, Remove) VALUES ('" + WordArray[WordCount] + "', " + Good + ", " + Bad + ", " + Remove + ");"; 

您需要在SQL语句的第一个参数周围添加单引号。

 string sSQL = "INSERT INTO WordDef (Word, Good, Bad, Remove) VALUES ('" + WordArray[WordCount] + "', " + Good + ", " + Bad + ", " + Remove + ")"; 

字符和日期字段要求用“单引号”包围值

不,你需要这样:

上述就是C#学习教程:在C#中执行SQL语句?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

 string query = "INSERT INTO Table_PersonInfo (PersonID,Surname ,[Family Name] ,AddsOnName ,Street,Number ,PostalCode ,[City of Birth] ,[Year of Birth] ,[Phone Number]) VALUES ('"+@personID+"' , '"+ @surname + "' , '"+@familyname+"' , '"+@nameExtension+"' , '"+@street+"' , '"+@houseNumber+"' , '"+ @postalCode+"' , '"+@yearofbirth+"' , '"+@placeofbirth+"' , '"+@phoneNumber+"')"; 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/996951.html

(0)
上一篇 2021年12月25日
下一篇 2021年12月25日

精彩推荐