using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms; namespace _01SQLAndAdo.Net
{
public partial class SqlData2DataGirdView : Form
{
public SqlData2DataGirdView()
{
InitializeComponent();
} private void SqlData2DataGirdView_Load(object sender, EventArgs e)
{ string connStr = ConfigurationManager.ConnectionStrings["sql"].ConnectionString;
string commandText = @"SELECT TOP 1000 [User_ID]
,[User_Name]
,[User_Gender]
,[User_Age]
,[User_Address]
,[User_Birthday]
,[User_Remark]
,[User_Money]
,[User_GUIDDemo]
,[User_Pwd]
FROM[LJK_SQLServerDB].[dbo].[User_Info]";
using (SqlConnection conn = new SqlConnection(connStr))
{
using (SqlDataAdapter adapter = new SqlDataAdapter(commandText, connStr))
{
//DataSet方式,查询多张表的时候应用
//DataSet dataSet=new DataSet();
//adapter.Fill(dataSet,"demo");
//this.dgvUserInfo.DataSource = dataSet.Tables["demo"]; DataTable dataTable = new DataTable();
//填充之前不需要打开数据库连接,Adaper会自动打开连接,并执行SQL
//Fill方法内部:
//1. 先判断SqlConnection是否初始化,如果没有打开链接,那么打开连接。
//2. 初始化一个Select(commandText) SqlCommand对象
//3. 通过cmd对象执行,然后返回一个SqlReader对象。
//4. 读取数据库中的数据,然后填充到DataTable上去
adapter.Fill(dataTable); //把数据库中的数据 填充到 内存表中
//把内存表显示到DataGirdView上去
// this.dgvUserInfo.DataSource = dataTable; // var o = dataTable.Rows[0][1]; // dataRow["列名"]; //弱类型
//user.UserInfo //强类型,出错概率下降
List<UserInfo> userInfoList = new List<UserInfo>();
foreach (DataRow dataRow in dataTable.Rows)
{
Console.WriteLine(dataRow["User_Id"] + " " + dataRow[]);
Console.WriteLine(dataRow["User_Name"] + " " + dataRow[]);
Console.WriteLine(dataRow["User_Age"] + " " + dataRow[]);
Console.WriteLine(dataRow["User_Pwd"] + " " + dataRow[]);
UserInfo userInfo = new UserInfo();
userInfo.UserId = int.Parse(dataRow["User_ID"].ToString());
userInfo.UserName = dataRow["User_Name"].ToString();
if (!string.IsNullOrEmpty(dataRow["User_Age"].ToString()))
{
userInfo.UserAge = int.Parse(dataRow["User_Age"].ToString());
// userInfo.UserAge = dataRow["User_Age"].ToString();
// userInfo.UserAge = 1;
}
else
{
userInfo.UserAge = ;
} if (!string.IsNullOrEmpty(dataRow["User_Pwd"].ToString()))
{
userInfo.UserPwd = int.Parse(dataRow["User_Pwd"].ToString());
}
else
{
userInfo.UserPwd = ;
} userInfoList.Add(userInfo); //把DataTabel的数据转成List<UserInfo> } this.dgvUserInfo.DataSource = userInfoList; } } }
}
}

3_05_MSSQL课程_Ado.Net_SQLDataAdapter的更多相关文章

  1. 3_05_MSSQL课程_Ado.Net_DataSet数据集

    //创建一个内存的数据集 DataSet ds=new DataSet("LJK"); //创建一张内存表 DataTable dt01=new DataTable("d ...

  2. 3_08_MSSQL课程_Ado.Net_子查询

    子查询 1.把一个查询结果作为一个表来使用,就是子查询. 2.把一个查询结果作为一个 表达式进行使用就是子查询. (分页Sql)

  3. 3_07_MSSQL课程_Ado.Net_委托、事件

    委托和事件的区别? (1)委托是一个类. 事件是一个委托类型的实列. (2)委托可以在定义委托实列的类的外部触发执行.(不安全) 事件只能能在定义它的类的内部触发执行.(安全),类外部只能注册事件的响 ...

  4. 3_06_MSSQL课程_Ado.Net_接口、委托、事件、观察者模式

    1.接口——实现接口 2.委托.事件(定义事件.注册事件.触发事件) 3.接口和事件的区别,怎么分情况用? 4.观察者模式作为设计模式的一种,也称发布订阅模式. 应对类型的变化和个数的变化. 中介设计 ...

  5. 3_04_MSSQL课程_Ado.Net_.ExcuteReader()(SQLDataReader)

    ExcuteNonQuery(); 返回影响的行数 ExcuteSacalar();返回第一行第一列 ExcuteReader(): Reader,指针,指向表的表头.只是指向,数据仍在数据库中. S ...

  6. 3_03_MSSQL课程_Ado.Net_数据导入

    数据库数据导出和导入 思路: --思路: 1.找到文件 2.读取文件 3.第一行 忽略 4.insert using System; using System.Collections.Generic; ...

  7. 3_03_MSSQL课程_Ado.Net_登录复习和ExcuteScalar

    SQL注入 ->登陆窗体破解 ->配置文件 ->首先在 app.Config文件中添加 节点,如下: <connectionStrings> <add name=& ...

  8. 3_02_MSSQL课程_Ado.Net_连接池_连接字符串

    连接池技术:是一种对象池技术. 连接对象频繁的开启和关闭操作. innerConnection  先从池子里面拿,如果没有创建新的!!连接池有大小,最大/最小.  提高了连接对象的重用. Asp.ne ...

  9. 3_01_MSSQL课程_Ado.Net_连接数据库

    1. Ado.Net 是一组微软的c#操作数据库的类库. 2.开发人员将界面上的数据(用户的操作和输入的数据)存储到数据库当中.. 3.数据库访问的驱动.即:应用程序和数据库的桥梁. 4.驱动层. S ...

随机推荐

  1. 【C语言】用函数实现两个数排序(指针作函数参数)

    原理就不讲了,这里用来理解指针的使用方法 #include <stdio.h> void fun(int* a,int* b) { int t; if(*a>=*b) { t = * ...

  2. 【C语言】实参求值的顺序

    #include<stdio.h> void fun(int x,int y) { printf("x=%d,y=%d",x,y); } int main() { in ...

  3. C#中发ref和out

    ref--Reference  引用 out--Output   输出 相同点: 代入参数时,前面必须加上ref  out 关键字 都能在方法内对外部的变量的值进行更改 不同点: ref代入的参数必须 ...

  4. poi处理excel自定义日期格式

    poi读取excel自定义时间类型时,读取到的是CELL_TYPE_NUMERIC,即数值类型,这个时候如果直接取值的话会发现取到的值和表格中的值不一样,这时应该先判断值是否是时间或者日期类型再进行处 ...

  5. opencv:图形绘制与填充

    #include <opencv2/opencv.hpp> #include <iostream> using namespace cv; using namespace st ...

  6. The Preliminary Contest for ICPC Asia Xuzhou 2019 M. Longest subsequence(思维+序列自动机)

    序列自动机跑s串 假设k为s和t相同的长度,初始时相同长度为0 取s串中大于t[i]的最左边的位置,用n-tmp+1+i-1更新答案,tmp是最左端的位置 然后去t[i]相等的位置,走到下一位,如果下 ...

  7. Python学习(一)——开发语言和Python的安装

    开发语言: 高级语言: Python,Java,PHP,C#,Go,ruby,C++...都依赖于C→字节码 语言的对比: Python,Java:既能写网页又能写后台 Python:开发效率比Jav ...

  8. phpstorm 断点调试

    1.设置php的xdebug 在php.ini中设置 [XDebug] xdebug.profiler_output_dir="H:\phystudy\PHPTutorial\tmp\xde ...

  9. Hack the box邀请码和注册问题总结

    注意下,有3个坑, 1. 解码方式是随机的,记得看DATA下面提示用哪种 2. post时候可以直接用f12里的console,命令是: $.post('https://www.hackthebox. ...

  10. DataGrid 獲取 制定 row Col 單元格

    public static class DataGridHelper     {         /// <summary>                  /// Gets the v ...