C#学习总结2013.10.24—2013.10.30

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.Openbyte通过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){

    //...

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值