C#怎么连接数据库并使用数据库啊?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#怎么连接数据库并使用数据库啊?相关的知识,希望对你有一定的参考价值。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data;
using System.Data.SqlClient;
namespace database

public partial class Form1 : Form

//定义什么变量?
public Form1()

InitializeComponent();


private void button2_Click(object sender, EventArgs e)

Application.Exit();


private void button1_Click(object sender, EventArgs e)

//这里是连接数据库并使用数据库的代码怎么写啊?



以下是一个C#与数据库操作的通用类完整代码,几乎可以进行所有的操作。不要在代码中出现SQL语句,要用存储过程,这样才能保证数据的安全。
public class DBHelper

private static SqlConnection connection;
private static SqlCommand command;
private static SqlDataAdapter da;
private static DataSet ds;
private static string connString = "Data Source=服务器名;Initial Catalog=数据库名;Integrated Security=true";//用windows身份登录

//连接属性:用于实例化连接对象并打开连接对象
public static SqlConnection Connection

get

if (connection == null)

connection = new SqlConnection(connString);

if (connection.State==ConnectionState.Broken || connection.State==ConnectionState.Closed)

connection.Open();

return connection;



/// <summary>
/// 通过SQL语句从数据库返回单个值
/// </summary>
/// <param name="strSql">SQL语句</param>
/// <returns>返回值:1、0、-1</returns>
public static int GetScalar(string strSql)

try

command = new SqlCommand(strSql,connection);
connection.Open();
int i = (int)command.ExecuteScalar();
return i;

catch (Exception)

connection.Close();
return -1;



/// <summary>
/// 通过存储过程及参数返回单个值
/// </summary>
/// <param name="storedProcedureName">存储过程名</param>
/// <param name="parameters">参数集合</param>
/// <returns>返回单个值</returns>
public static object GetScalar(string storedProcedureName, params SqlParameter[] parameters)

try

//将存储过程封装在命令对象
command = new SqlCommand(storedProcedureName, Connection);
//指定命令对象执行的类型为存储过程
command.CommandType = CommandType.StoredProcedure;
//将参数添加到命令对象的参数集合中
command.Parameters.AddRange(parameters);
//执行命令
object o = command.ExecuteScalar();
//关闭连接
connection.Close();
//返回对象
return o;

catch (Exception)

connection.Close();
return null;



/// <summary>
/// 通过存储过程及参数查询返回数据集
/// </summary>
/// <param name="storedProcedureName">存储过程名</param>
/// <param name="parameters">参数集合</param>
/// <returns>返回数据集</returns>
public static DataSet GetDataSet(string storedProcedureName, params SqlParameter[] parameters)

//将存储过程封装在命令对象
command = new SqlCommand(storedProcedureName, Connection);
//指定命令执行的类型为存储过程
command.CommandType = CommandType.StoredProcedure;
//将参数添加到命令对象的参数集合中
command.Parameters.AddRange(parameters);

da = new SqlDataAdapter(command);
ds = new DataSet();
da.Fill(ds);
return ds;


/// <summary>
/// 通过存储过程及参数执行对表的增删改操作
/// </summary>
/// <param name="storedProcedureName">存储过程名</param>
/// <param name="parameters">参数集合</param>
/// <returns>返回操作是否成功</returns>
public static bool Execute(string storedProcedureName,params SqlParameter[] parameters)

try

command = new SqlCommand(storedProcedureName, Connection);
command.CommandType = CommandType.StoredProcedure;
command.Parameters.AddRange(parameters);

command.ExecuteNonQuery();
connection.Close();
return true;

catch (Exception)

connection.Close();
return false;


参考技术A string connstr = "Data Source=(local); database=数据库名; user id=登录名; password=密码";

string sql = "select * from char_test";//sql语句
SqlConnection conn = new SqlConnection(connstr);
conn.Open();
try


SqlCommand comm = new SqlCommand(sql, conn);
SqlDataReader reader = comm.ExecuteReader();

if (reader.Read())
TextBox2.Text = reader[0].ToString();


catch (Exception ex)

Response.Write(ex.Message);

finally

conn.Close();
参考技术B 先说你要连哪种数据库啊?

连接不同的数据库是不一样的
参考技术C string sql = "select * from char_test";//sql语句
SqlConnection conn = new SqlConnection(connstr);
using(conn)
conn.Open();
try


SqlCommand comm = new SqlCommand(sql, conn);
SqlDataReader reader = comm.ExecuteReader();

if (reader.Read())
TextBox2.Text = reader[0].ToString();


catch (Exception ex)

Response.Write(ex.Message);


C#中IDataReader和DataSet的区别是啥呢?

C#中IDataReader和DataSet有什么区别
具体怎么使用啊?

参考技术A 用connection对象和command对象与数据库连接并交互后,有两种方法来访问获取的结果。
1.使用DataReader对象,用来逐行从数据源获取数据并处理;
2.使用DataSet对象,用来将数据存到内存中进行处理。
参考技术B DataReader是读记录,
DataSet是临时存放数据库
参考技术C ADO.NET提供以下两个对象,用于检索关系数据并将其存储在内存中:DataSet和DataReader。DataSet提供一个内存中数据的关系表示形式,一整套包括一些表在内的数据(这些表包含数据、对数据进行排序并约束数据),以及表之间的关系。DataReader提供一个来自数据库的快速、仅向前、只读数据流。
当使用DataSet时,经常会利用DataAdapter(也可能是CommandBuilder)与数据源进行交互。当使用DataSet时,也可以利用DataView对DataSet中的数据应用排序和筛选。也可以从DataSet继承,创建强类型DataSet,用于将表、行和列作为强类型对象属性公开。
当设计应用程序时,要考虑应用程序所需功能的等级,以确定使用DataSet或者是DataReader。
要通过应用程序执行以下操作,就要使用DataSet:
r 在结果的多个离散表之间进行导航。
r 操作来自多个数据源(例如,来自多个数据库、一个XML文件和一个电子表格的混合数据)的数据。
r 在各层之间交换数据或使用XML Web服务。与DataReader不同的是,DataSet能传递给远程客户端。
r 重用同样的记录集合,以便通过缓存获得性能改善(例如排序、搜索或筛选数据)。
r 每条记录都需要执行大量处理。对使用DataReader返回的每一行进行扩展处理会延长服务于DataReader的连接的必要时间,这影响了性能。
r 使用XML操作对数据进行操作,例如可扩展样式表语言转换(XSLT转换)或XPath查询。

对于下列情况,要在应用程序中使用DataReader:
r 不需要缓存数据。
r 要处理的结果集太大,内存中放不下。
r 一旦需要以仅向前、只读方式快速访问数据。
注填充DataSet时,DataAdapter使用DataReader。因此,使用DataAdapter取代DataSet提升的性能表现为节省了DataSet占用内存和填充DataSet需要的循环。一般来说,此性能提升只是象征性的,因此,设计决策应以所需功能为基础。

参考资料:http://hi.baidu.com/huangping0524/blog/item/04a5394f8a68d233aec3ab04.html

本回答被提问者采纳

以上是关于C#怎么连接数据库并使用数据库啊?的主要内容,如果未能解决你的问题,请参考以下文章

c# winform程序怎么连接到本地sqlserver 数据库啊

c# FORM1怎么连接FORM2?

C# udp是啥意思啊,是干啥的啊

在VS2010中怎样用C#创建数据库连接并执行sql语句 最好举个例子讲一下

使用php百度BAE怎么连接数据库啊

C# ASP.NET中连接ORACLE的连接字符串写成这样是否错的啊?