您的位置:首页 > 编程语言 > C#

C#学习总结2013.10.24—2013.10.30

2013-11-03 00:00 363 查看

1.C#进行sql查询时候是用参数

在sql语句中,有的时候需要进行参数的动态赋值,比如插入语句中的values的值,但是当value中有单引号,双引号之类的值得时候会产生很多麻烦,而且也会产生sql注入问题,因此,c#提供参数赋值的方法。

例子:

cmd.CommandText = "insert intophone(StartNo,EndNo,Name) values(@StartNo,@EndNo,@Name)";

cmd.Parameters.Clear();

cmd.Parameters.Add(new SqlParameter("StartNo",startNo));

cmd.Parameters.Add(new SqlParameter("EndNo",endNo));

cmd.Parameters.Add(new SqlParameter("Name", 运营商名称+city));

2.数据库查询的完整步骤

1.连接服务器

SqlConnectionthisConnection = new SqlConnection(。。。。);

thisConnection.Open();

2.新建命令

SqlCommandthiscommand = thisConnection.CreateCommand();

3.给问题文本赋值

thiscommand.CommandText= "。。。。。。。"

这里的字符串就是需要执行的sql命令

4.执行命令

分为三种命令,相应调用不同的方法:

1)不需要查询的(插入,更新,删除)

thiscommand.ExecuteNonQuery();

该函数会返回收到影响的总行数。

2)只需要查询一个值的

thiscommand.ExecuteScalar();

该函数会返回使用的sql语言查询的结果

3)需要同时查询得到多个值的

SqlDataReader Reader= thiscommand.ExecuteReader(); //新建一个//SqlDataReader

Reader.Read();//读取一行数据到Reader中

res[0] =(string) Reader["Text"]; //读取

Reader.Close();//关闭Reader

4)关闭连接

thisConnection.Close();

3.在父窗口中调用父窗口中的时间函数,用于刷新父窗口的数据窗格

窗体A有个DataGridView,窗体B调用A,那么:

把窗体A的DataGridView设置为public的

把窗体B的构造写为 public B(A a){ ...}

在A中newB的时候写newB(this).Show();

这时 B中的a就可以访问到DataGridView了

4.C#判断数据库连接是否打开

conn.State ==ConnectionState.Open

5.C#遍历DataSet中数据的几种方法总结

//多表多行多列的情况

foreach(DataTable dt in YourDataset.Tables) //遍历所有的datatable

{

foreach (DataRow dr in dt.Rows) ///遍历所有的行

foreach (DataColumn dc in dt.Columns) //遍历所有的列

Console.WriteLine(“{0},{1}, {2}”, dt.TableName,dc.ColumnName, dr[dc]); //表名,列名,单元格数据

}

//遍历一个表多行多列

foreach(DataRowmDr in dataSet.Tables[0].Rows )

{

foreach(DataColumn mDc indataSet.Tables[0].Columns)

{

Console.WriteLine(mDr[mDc].ToString());

}

}

//遍历一个表多行一列

foreach(DataRow row in DataSet1.Tables[0].Rows)

{

Console.WriteLine(row[0].ToString());

}

//一行一列

ds.Tables[0].Rows[0]["字段"]

6.C# FileStream/StreamWriter/StreamReader的区别

FileStream对象表示在磁盘或网络路径上指向文件的流。这个类提供了在文件中读写字节的方法,但经常使用StreamReader或 StreamWriter执行这些功能。这是因为FileStream类操作的是字节和字节数组,而Stream类操作的是字符数据。这是这两种类的一个重要区别,如果你是准备读取byte数据的话,用StreamReader读取然后用
System.Text.Encoding.Default.GetBytes转化的话,如下,则可能出现数据丢失的情况,如byte数据的个数不对等。因此操作byte数据时要用FileStream。

stringtextContent = fileStream.ReadToEnd();

byte[] bytes =System.Text.Encoding.Default.GetBytes(textContent);

字符数据易于使用, 但是有些操作,比如随机文件访问(访问文件中间某点的数据),就必须由FileStream对象执行.

其中创建FileStream对象最简单的构造函数如下:

FileStream file= new FileStream(fileName,FileMode.Member);

FileStream file = new FileStream(fileName, FileMode.Member, FileAccess.Member);

StreamReader旨在以一种特定的编码输入字符,而Stream 类用于

字节的输入和输出。使用 StreamReader 读取标准文本文件的各行信息。

除非另外指定,StreamReader 的默认编码为 UTF-8,而不是当前系统

的 ANSI 代码页。UTF-8 可以正确处理 Unicode 字符并在操作系统的本地化版本上提供一致的结果。

FileStream处理字节流,采用FileMode.Open将byte通过char转换成文本文件

说明:

Append:如果文件存在则打开文件,将光标移到文件尾部

create打开文件时,如果文件不存在则创建文件,存在则覆盖文件

createnew:打开文件时,如果文件不存在则创建文件,存在则抛出异常

open打开文件时,如果文件不存在则抛出异常

openorcreate存在打开,否则创建

truncate打开现有文件,清楚文件的内容,但原文件的创建日期还在

例子:

1. //StreamWriter写数据

StreamWriter sw= new StreamWriter(textBox1.Text,true,Encoding.UTF8);

sw.Write(textBox2.Text);

2. //filestream读取并显示

FileStreamfstream = new FileStream(textBox1.Text, FileMode.Open);

byte[] buf = new byte[filein.Length];

fstream.Read(buf, 0, buf.Length);

//字节到字符的装换

Decoder d = Encoding.UTF8.GetDecoder();

char[] c = new char[filein.Length];

d.GetChars(buf, 0, buf.Length, c, 0);

//字符数组转换字符串 string为引用类型数组

string s = new string(c);

textBox2.Text = s;

3. //FileStream 和StreamReader合用

FileStreamfstream = new FileStream(textBox1.Text,FileMode.Open,FileAccess.ReadWrite);

StreamReader sr= new StreamReader(fstream);

string s = "";

do

{

s += sr.ReadLine();

}

while (sr.ReadLine() != null);

textBox2.Text = s;

sr.Close();

7. C# 判断OpenFileDialog点击的是确定还是取消按钮

DialogResultresult = op.ShowDialog();

if (result == DialogResult.OK){

//...

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: