日常工作中,感觉一些基础知识需要做下笔记,可能是刚毕业的缘故吧,还保持着做笔记的习惯,但根据以往经验,纸质笔记最多保持一年,过后想找已是难过登天。电子版笔记感觉很不错,尤其是发布到网络中。笔记内容是本人遇到的感觉可能会有些用的东西,很是琐碎,记录在博客园中,仅供学习参考。
1、将数据库中的内容显示到一个窗体界面中,此次将它显示到datagrid中。
思路:可以说没有什么思路,很简单。读取数据库中某个表格的内容,将其放到dataset中,然后将其作为datagrid的源即可。
贴代码:
string sqlstr = "server=192.168.100.46;database=PublicProgram;User ID=sa;pwd=typt"; using (SqlConnection sqlconn = new SqlConnection(sqlstr)) { using (SqlCommand sqlcomm = sqlconn.CreateCommand()) { sqlcomm.CommandText = "select top 3 * from Transcript order by ExamTime desc "; DataSet dt = new DataSet(); SqlDataAdapter adapter = new SqlDataAdapter(sqlcomm); adapter.Fill(dt); DataTable ds = dt.Tables[0]; this.dataGrid1.ItemsSource = dt.Tables[0].DefaultView; } }
2、获取excel表格中的内容,此次将excel中的内容保存数据库中
思路:获取excel的路径,通过OleDB方式获取excel文件的数据,保存到dataset中。接着可以单个获取dataset中值或者导入到数据库中。
获取excel的路径:
OpenFileDialog openFileDialog = new OpenFileDialog(); DialogResult result = openFileDialog.ShowDialog(); if (result ==System.Windows .Forms .DialogResult .Cancel ) { return; } string fileName = openFileDialog.FileName; tbPath.Text = fileName;
通过OleDB方式获取excel文件,并保存到dataset
string strConn = "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + filePath + ";" + "Extended Properties=\"Excel 12.0;HDR=YES;IMEX=1\""; OleDbConnection OleConn = new OleDbConnection(strConn); OleConn.Open(); string sql = string.Format("SELECT * FROM [{0}$]", sheetName); OleDbDataAdapter OleDbDAdap = new OleDbDataAdapter(sql, OleConn); DataSet ds = new DataSet(); OleDbDAdap.Fill(ds, sheetName); OleConn.Close();
获取dataset后,可以将它存取到数据库中,也可以从其中得到需要的数据信息
存到数据库中:
using (SqlBulkCopy bcp = new SqlBulkCopy(connectionString)) { //bcp.SqlRowsCopied += new SqlRowsCopiedEventHandler(bcp_SqlRowsCopied); bcp.BatchSize = 100; //每次传输的行数 bcp.NotifyAfter = 100; //每次提示的行数 bcp.DestinationTableName = "[PublicProgram].[dbo].[User]";//目标表 bcp.WriteToServer(ds.Tables[0]); }
如果获取单个数据,举例简单说明一下:
int length = ds.Tables[0].Rows.Count; int len = ds.Tables[0].Columns.Count; id = Convert.ToInt32(ds.Tables[0].Rows[length-1][len-2]); pwd = Convert.ToInt32(ds.Tables[0].Rows[1][1]); for (int i = 0; i < length - 1; i++) { id = Convert.ToInt32(ds.Tables[0].Rows[i][0]); pwd = Convert.ToInt32(ds.Tables[0].Rows[i][1]); }
3、wpf设置datagrid的一些属性:
在第一道题中写到了将dataset作为datagrid的数据源,这里仅介绍在wpf中datagrid的一些用法。
改变datagrid的标题行的一些属性:
<DataGrid.ColumnHeaderStyle> <Style TargetType="DataGridColumnHeader"> <Setter Property="Background" Value="black"/> <Setter Property="Foreground" Value="white"/> <Setter Property="FontSize" Value="20" /> <Setter Property="HorizontalContentAlignment" Value="Center"/> <Setter Property="VerticalContentAlignment" Value="Center"/> </Style> </DataGrid.ColumnHeaderStyle>
将标题绑定到一些数据源中,设置其中的内容居中
首先需要将控件设定样式:
<Page.Resources >
<ResourceDictionary >
<Style x:Key="dgCell" TargetType="TextBlock">
<Setter Property="TextAlignment" Value="Center"/>
</Style >
</ResourceDictionary >
</Page.Resources >
然后调用:
<DataGrid.Columns >
<DataGridTextColumn Header="成绩" Width="50" Binding="{Binding Path=Score}" IsReadOnly="True" ElementStyle="{StaticResource dgCell}"/>
<DataGridTextColumn Header="项目" Width="50" Binding="{Binding Path=Curriculum}" IsReadOnly="True" ElementStyle="{StaticResource dgCell}"/>
</DataGrid.Columns >
笔停此处。继续学习,继续前行。
/// <summary> /// 查询excel电子表格添加到dataset /// </summary> /// <param name="filenameurl"></param> /// <returns></returns> public DataSet ExecleDs(string filenameurl) { string strConn = "Provider=Microsoft.ACE.OleDb.12.0;" + "data source=" + filenameurl + ";Extended Properties='Excel 12.0; HDR=YES; IMEX=1'"; OleDbConnection conn = new OleDbConnection(strConn); conn.Open(); DataSet ds = new DataSet(); string strSql = string.Format("SELECT * FROM [{0}$]", "Sheet1"); OleDbDataAdapter odda = new OleDbDataAdapter(strSql, conn); odda.Fill(ds, "hou"); return ds; }