c# 数据库操作 读写数据库

本文提供了一段C#代码示例,演示如何进行数据库的读写操作。首先,通过定义数据库连接字符串连接到本地数据库test,使用Integrated Security=SSPI进行身份验证。接着,创建SqlCommand对象,设置SQL语句,利用SqlParameter添加参数,实现数据插入。同时,介绍了通过SqlDataReader读取数据库数据的方法,使用Read()遍历并获取各列信息。

本文简单的介绍的通过C#对数据库的读写操作。

 

请先参考一下代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.Sql;
using System.Data.SqlClient;
using System.Data;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string connectonString = "Data Source=(local);Initial Catalog=test; Integrated Security=SSPI;";
            string commandString = "insert into test.dbo.student values ('100002','wei song',22,'3','Liu','test from sql')";
            string commansString_Parameter = "insert into test.dbo.student values (@id,@name,22,'3','Liu','test from sql')";
            string commansString_Parameter_ext = "insert into test.dbo.student values (@id_ext,@name_ext,22,'3','Liu','test from sql')";
            SqlConnection sqlConnection = new SqlConnection(connectonString);
            sqlConnection.Open();
            Console.WriteLine(sqlConnection.ServerVersion);
            Console.WriteLine(sqlConnection.State);

            // write the sql command , use sqlcommand to insert data to the datebase.

            SqlCommand command = new SqlCommand();
            command.Connection = sqlConnection;
            command.CommandText = commandString;
            command.ExecuteNonQuery();
            Console.WriteLine(sqlConnection.State);

            // add parameters to the sql command
            Console.WriteLine("please input user id & user name");
            string id = Console.ReadLine();
            string name = Console.ReadLine();
            command.CommandText = commansString_Parameter;
            SqlParameter sqlParameter_id = new SqlParameter("@id",id);
            SqlParameter sqlParameter_name = new SqlParameter("@name",name);
            command.Parameters.Add(sqlParameter_id);
            command.Parameters.Add(sqlParameter_name);
            command.ExecuteNonQuery();

            // another way to add sql parameters
            Console.WriteLine("please input user id & user name");
            id = Console.ReadLine();
            name = Console.ReadLine();
            command.CommandText = commansString_Parameter_ext;
            SqlParameter sqlParameter_id_ext = new SqlParameter("@id_ext",SqlDbType.NChar,10);
            SqlParameter sqlParameter_name_ext = new SqlParameter("@name_ext",SqlDbType.NChar,50);
            sqlParameter_id_ext.Value = id;
            sqlParameter_name_ext.Value = name;
            command.Parameters.Add(sqlParameter_id_ext);
            command.Parameters.Add(sqlParameter_name_ext);
            command.ExecuteNonQuery();

            // read data from database
            string readDataFormDatabase_string = "select * from test.dbo.student";
            SqlCommand readDataCommand = new SqlCommand();
            readDataCommand.CommandText = readDataFormDatabase_string;
            readDataCommand.Connection = sqlConnection;
            SqlDataReader sqlDataReader = readDataCommand.ExecuteReader();
            Console.WriteLine("//////////////////////////////////////////////////////////////////////////////");
            Console.WriteLine("id      name     age  class mentor infor  ");

            while(sqlDataReader.Read())
            {
                string user_id = sqlDataReader.GetString(0);
                string user_name = sqlDataReader.GetString(1);
                int user_age = sqlDataReader.GetInt32(2);
                string user_class = sqlDataReader.GetString(3);
                string user_mentor = sqlDataReader.GetString(4);
                string user_info = sqlDataReader.GetString(5);

                // there will be filled by blank after the name, for the name is 50 length in the database. need to process the user_name
                Console.WriteLine(user_id+user_name+user_age+user_class+user_mentor+user_info);
            }

            sqlConnection.Close();
        }
    }
}


 

 string commansString_Parameter = "insert into test.dbo.student values (@id,@name,22,'3','Liu','test from sql')";


这里是定义个用于通过参数进行数据库插入的语句,我们程序中经常需要给数据库中插入特定的参数信息。

添加参数:

 SqlParameter sqlParameter_id = new SqlParameter("@id",id);


将这个参数添加到SqlCommand中:

 command.Parameters.Add(sqlParameter_id);


详细说明

在连接数据库对数据库进行操作之前,需要建立一个对数据库的连接:

 SqlConnection sqlConnection = new SqlConnection(connectonString);


connectionString是一个已经定义好的字符串,存储着关于数据库连接的相关信息。

 string connectonString = "Data Source=(local);Initial Catalog=test; Integrated Security=SSPI;";


Data Source=(local)  指定我们要连接的数据库的位置,此例为连接本地数据库。

Initial Catalog=test    指定要连接数据库服务器中的哪个数据库,在本例中建立了一个名为test的数据库。

Integrated Security=SSPI 指定了数据库的访问方式,本例是通过SSPI指定为通过windows进行身份验证。

同事,数据库连接字符串中还可以有多个其他的参数可选,如下:

ConnectionTimeout

详情请查看MSDN. 当然,很多情况下我们需要访问其他电脑上的数据库,这样就需要

User ID

Password

等属性。

 

定义好数据库连接后,通过Open()函数打开对数据库的访问:

sqlConnection.Open();


 

对数据库进行操作的时候需要用SqlCommand类,并指定这个SqlCommand对象所对应的数据库连接和SQL语句:

 command.Connection = sqlConnection;
 command.CommandText = commandString;

 

如果是给数据库中插入数据, 则执行:


 

 command.ExecuteNonQuery();


通常情况下,我们要把用户输入的数据添加到数据库中,这个时候比较方便的操作就是通过SqlParameter给Sql语句中添加参数,这样就不用在自己合成查询字符串了。如下所示:

Console.WriteLine("please input user id & user name");
string id = Console.ReadLine();
string name = Console.ReadLine();
command.CommandText = commansString_Parameter;
SqlParameter sqlParameter_id = new SqlParameter("@id",id);
SqlParameter sqlParameter_name = new SqlParameter("@name",name);
command.Parameters.Add(sqlParameter_id);
command.Parameters.Add(sqlParameter_name);
command.ExecuteNonQuery();


读取数据库的数据的时候,我们通过SqlDataReader来获取数据库的信息

SqlDataReader sqlDataReader = readDataCommand.ExecuteReader();


这里的SqlDataReader对象获取的是查询返回的所有信息,通过Read()方法读取每一行的返回信息:

 while(sqlDataReader.Read())
{
     string user_id = sqlDataReader.GetString(0);
     string user_name = sqlDataReader.GetString(1);
     int user_age = sqlDataReader.GetInt32(2);
     string user_class = sqlDataReader.GetString(3);
     string user_mentor = sqlDataReader.GetString(4);
     string user_info = sqlDataReader.GetString(5);

     // there will be filled by blank after the name, for the name is 50 length in the database. need to process the user_name
     Console.WriteLine(user_id+user_name+user_age+user_class+user_mentor+user_info);
}


获取不同的列的信息,通过GetXXX()来获取,括号中的数字表示获取的是第几列的数据。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值