总觉得这样用起来很蛋疼,每执行一次语句都要 close一下,否则报错。
再者C#的string 是什么编码,这里对于 select* 出来的结果会不会自动转码?
再者C#的string 是什么编码,这里对于 select* 出来的结果会不会自动转码?
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows; using System.Windows.Forms; using System.Drawing; using System.IO; using System.Collections; using System.Configuration; using MySql.Data; using MySql.Data.MySqlClient; using System.Data; class SimpleDialog : Form { public static void Main() { // String mysqlStr = "server = localhost; user id=root; database=mysql; port=3306; password=1"; // String mysqlStr = "Database=test;Data Source=127.0.0.1;User Id=root;Password=1;pooling=false;CharSet=utf8;port=3306"; String mysqlStr = "Database=test;Data Source=127.0.0.1;User=root;Password=1;port=3306";//pooling=false;CharSet=utf8; MySqlConnection mycon = new MySqlConnection(mysqlStr); mycon.Open(); MySqlCommand command = new MySqlCommand("create table student (姓名 varchar(255), 语文 int, 数学 int, 英语 int)", mycon); MySqlDataReader reader = command.ExecuteReader(); reader.Close(); command = new MySqlCommand("insert into student values("喜羊羊",100,90,80)", mycon); reader = command.ExecuteReader(); reader.Close(); command = new MySqlCommand("insert into student values("懒羊羊",20,20,20)", mycon); reader = command.ExecuteReader(); reader.Close(); command = new MySqlCommand("insert into student values("慢羊羊",99,99,99)", mycon); reader = command.ExecuteReader(); reader.Close(); command = new MySqlCommand("select*from student", mycon); reader = command.ExecuteReader(); try { while (reader.Read()) { if (reader.HasRows) { Console.WriteLine(reader.GetString(0) + "\t" + reader.GetInt32(1) + "\t" + reader.GetInt32(2)); } } } catch (Exception) { Console.WriteLine("查询失败了!"); } reader.Close(); mycon.Close(); } }
解决方案
2
reader也用不着调Close
2
using ( SqlConnection myConnection = new SqlConnection( connString )) { using ( SqlCommand mySqlCommand = new SqlCommand( commandString, myConnection )) { myConnection.Open(); mySqlCommand.ExecuteNonQuery(); } }
2
https://msdn.microsoft.com/zh-cn/library/yh598w02.aspx
using语句,一个语法而已。
2
using ( ******) { ////// }这 using 是什么意思
此处的using作用是该段代码执行完成,自动回收资源,
2
可以参考下linq to sql 很方便。用起来也挺爽
2
想软件稳固系统资源少用点,资源回收就得考虑
2
想软件稳固系统资源少用点,资源回收就得考虑
C#不是和Java一样自动回收垃圾吗。C/C++才是人工手动的!
这就是你一直以来占着数据库连接和文件句柄不释放,趴着茅坑不拉屎的原因?
2
看需求,不能说你这里有没有什么错。假如是学习,可以百度个帮助类。例如sqlhelper,就是一个很不错的参考代码。
4
用错了呗,你执行插入的那些干嘛要用返回reader的?可以直接用不返回的啊,就是带有Non的那个。
2
想软件稳固系统资源少用点,资源回收就得考虑
C#不是和Java一样自动回收垃圾吗。C/C++才是人工手动的!
是自动,但回收时间不确定,假如你短时间new大量包含非托管资源的对象,有可能就来不及释放直接内存溢出了,所以要养成即时释放的好习惯