数据库课实验 使用C语言操作SQL SERVER 数据库
- 格式:pdf
- 大小:605.70 KB
- 文档页数:3
数据库
1.实验目标
熟悉SQL2008,熟悉数据库的访问过程,通过C#方式访问数据库。
2.实验步骤
第一步、打开SQL
打开后界面如下,一定选择本地服务器,按照默认的配置配好,然后点击连接。
第二步、新建数据库
弹出如下界面,在数据库名称一栏输入Student,单击确定,完成了数据库的创建。
此时,在对象资源管理器中我们看到了刚才新建的名为Student的数据库。
第三步、新建表
找到我们刚才新建的数据库,再找到其子菜单,选中表这个子菜单,单击右键,选择新建表。
弹出如下界面:
在表中录入姓名、年龄、学号、班级4个字段
Ctrl+s保存表,并将表名更改为Info
此时,在对象资源管理器中可以查看到我们在Student数据库里面创建名为Info的表。
第四步,录入信息
选中刚才创建的名为Info的表,单击右键,在选项卡里选择编辑前200行。
在弹出框里设计并录入学生信息。
基于C#.NET和SQL Server的数据库应用系统开发实训报告实训题目:学生信息管理系统一、课程设计目的课程设计是主要实践性教学环境之一,是围绕所学一门课程,综合运用所学知识进行实际应用设计的综合分析和设计的训练。
通过C#.NET程序设计课程实习,以进一步巩固所学C#.NET程序设计和SQL Server2005数据库知识,初步掌握应用C#和数据库开发应用系统程序必备的技能,为今后进一步学习和从事软件方面的职业打下一定的基础。
二、课程设计的任务、内容和要求1、任务学生根据老师指定的或自己拟订的经老师认可的运用C#和SQL Server2005知识进行中小型信息管理系统开发的项目,最终提交的解决方案、课程设计报告和完整项目软件。
三、实验步骤1、需求分析需求分析的重点在于调查、收集与分析用户在数据管理中的信息要求、处理要求、安全性、与完整性的要求。
然后在进行概念结构设计阶段。
第一步:初始化工程,这一阶段的任务是从目的的描述和范围描述开始,确定建模目标;第二步:定义实体:实体集成员都有一个共同的特征和属性集,可以从收集的源材料—基本的数据表中间接或直接的标识出大部分的实体;第三步:定义联系,根据实际的业务需求和规划,使实体联系矩阵来标识实体间的二元关系;第四步:定义码,唯一标识每一个实体的实例,从候选码中确定主码;第五步:定义属性,确定属性的所有者,定义非主码属性:第六步:定义其他对象和规则,定义数据类型、长度、精度、是否非空、默认值、约束规则等。
1.1功能需求分析根据数据库中存储的数据对登录的用户账号进行验证,再进行判断是否授予访问权限。
管理员可以根据需要,对学生的基本信息进行查看、添加、修改以及删除,详细操作如下:(1)添加学生信息的功能主要包括对学生信息的输入,包括待输入学生的学号、姓名、年龄、性别、专业名。
(2)查询学生信息的功能就是对已经添加的学生信息按学号进行查看,有利于管理者对学校学生信息的了解。
/// <summary>/// 创建数据库/// </summary>/// <param name="dbname"></param>/// <param name="dbpath"></param>/// <returns></returns>public string CreateMSSQL(string dbname, string dbpath){if (!ServiceIsExisted("MSSQLSERVER")){return "SQL Server 尚未正确配置,请及时进行安装。
";}if (string.IsNullOrEmpty(dbname)){return "请输入要创建的数据库。
";}if (string.IsNullOrEmpty(dbpath)){return "请选择数据库存放路径。
";}DataSet ds = new DataSet();string consqlserver = "Data Source=.;Integrated Security=True"; SqlConnection con = new SqlConnection(consqlserver);try{con.Open();SqlCommand cmd = new SqlCommand();mandText = "create database " + dbname + " on primary (name='" + dbname + "',filename='" + dbpath + "\\" + dbname + ".mdf') log on (name='" + dbname + "_log',filename='" + dbpath + "\\" + dbname + "_log.ldf')";cmd.Connection = con;cmd.ExecuteNonQuery();return "数据库创建成功";}catch (Exception ex){return ex.Message;}finally{con.Close();con.Dispose();}}/// <summary>/// 附加数据库/// </summary>/// <param name="dbname"></param>/// <param name="dbpath"></param>/// <returns></returns>public string ADDMSSQL(string dbpath){if (string.IsNullOrEmpty(dbpath)){return "未选择文件";//"您未选择数据库附加路径,附加数据库失败!"}int i = dbpath.IndexOf('.');int star = stIndexOf('\\');string log = dbpath.Substring(0, i);string dbname = dbpath.Substring(star + 1, i - star - 1);DataSet ds = new DataSet();string consqlserver = "Data Source=.;Integrated Security=True"; SqlConnection con = new SqlConnection(consqlserver);try{//string strr = " sp_attach_db '" + dbname + "','" + dbpath + "','" + log + "_log.ldf'";con.Open();SqlCommand cmd = new SqlCommand();mandText = " sp_attach_db '" + dbname + "','" + dbpath + "','" + log + "_log.ldf'";cmd.Connection = con;cmd.ExecuteNonQuery();return "附加成功";}catch (Exception ex){return ex.Message;}finally{con.Close();con.Dispose();}}/// <summary>/// 获取指定IP地址的数据库所有数据库实例名。
实验2:SQL SERVER数据库管理一、实验目的1、掌握使用向导和T-SQL语句创建数据库二、实验内容(要求所创建的数据库和相应的SQL语句存盘到U盘上)1、创建产品销售数据库CPXS数据文件初始大小为5MB,最大大小50MB,增长方式按10%比例增长;日志文件初始为2MB,最大可增长到10MB,按2MB增长;其余参数取默认值。
(1)请写出相应的SQL语句:CREATE DATABASE CPXSON(NAME = 'CPXS_Data',FILENAME = 'E:\SQL \CPXS_Data.MDF' ,SIZE = 5MB,MAXSIZE = 50MB,FILEGROWTH = 10%)LOG ON(NAME = 'CPXS_Log',FILENAME = ‘E:\SQL \CPXS _Log.LDF' ,SIZE = 2MB,MAXSIZE=10MB,FILEGROWTH = 2MB)(2)用T-SQL语句将CPXS数据文件的增长方式改为按5MB增长请给出相应语句和结果截图:ALTER DATABASE CPXSMODIFY FILE(NAME=CPXS_Data,FILEGROWTH=5MB)2、建立多文件组数据库(1) 使用SQL语句创建GXGL数据库数据库名称是JXGL,该数据库所包含的文件均存储在E:\project下。
其中主数据库文件逻辑名称为JXGL_Data,物理名称为JXGL.mdf,初始大小为5MB,最大容量为20MB,增长速度为10%。
次数据库文件1的逻辑名称为JXGL1_Data,物理名称为JXGL1.ndf,初始大小为2MB,最大容量为5MB,增长速度为1MB,将次数据文件1放在FG1这个文件组中。
日志文件逻辑名称为JXGL_log,物理名称为JXGL.ldf,初始大小为2MB,最大容量为10MB,增长速度为15%。
使用C#对sqlserver数据库【备份】【还原】【分离】【附加】软件名称:SQLServer数据库小助手开发工具:Microsoft Visual Studio 2008开发语言:C#版本:2软件预览2.设置数据库连接软件下载地址1:地址2:主要源码using System;using ;usingusing ;usingusing ;using employment;namespace 数据库小助手{public class DataBaseControl{alue = DataBaseName;SqlParameter("@filename1", );["@filename1"].Value = DataBase_MDF;SqlParameter("@filename2", );["@filename2"].Value = DataBase_LDF;= ;();("附加数据库成功", "信息提示");}catch (Exception ex){, "信息提示");}finally{();}}alue = DataBaseName;= ;();("分离数据库成功", "信息提示");}catch (Exception ex){, "信息提示");}finally{();}}alue = DataBaseName;SqlParameter("@backupname", );["@backupname"].Value = @DataBaseOfBackupPath + @DataBaseOfBackupName;= ;();("备份数据库成功", "信息提示");}catch (Exception ex){, "信息提示");}finally{();}}alue = DataBaseName;SqlParameter(@"BackupFile", );[@"BackupFile"].Value = BackupFile;= ;();("还原数据库成功", "信息提示");}catch (Exception ex){, "信息提示");}finally{();}}oString());}();();}catch (Exception){throw new Exception("数据库连接失败,请检查信息是否正确。
数据库原理及应用实验报告学号:姓名:实验1一、实验目的:熟悉SQL Server使用界面,掌握使用SSMS和SQL语句创建并设置数据库。
二、实验原理:1.使用SSMS创建数据库2.创建数据库语句:CREATE DATABASE 数据库名[ON [PRIMARY] //指定一个文件为主要文件[<文件格式>[,…n]][,<文件组格式>[,…n]] ][LOG ON {<文件格式>[,…n]}]<文件格式>::=([NAME=逻辑文件名,]FILENAME=‘操作系统下的文件名和路径’[,SIZE=文件初始容量][,MAXSIZE={文件最大容量|UNLIMITED}][,FILEGROWTH=递增值])[,…n]<文件组格式>::=FILEGROUP 文件组名<文件格式>[,…n]3.修改数据库语句:ALTER DATABASE 数据库名{ADD FILE <文件格式>[,…n] [TO FILEGROUP 文件组名]|ADD LOG FILE<文件格式>[,…n]|REMOVE FILE 逻辑文件名|ADD FILEGROUP 文件组名|REMOVE FILEGROUP 文件组名|MODIFY FILE<文件格式>|MODIFY FILEGROUP 文件组名文件组属性}<filespec>::=(NAME=逻辑文件名[,FILENAME=‘实际文件名和路径’][,SIZE=容量][,MAXSIZE={最大容量|UNLIMITED}][,FILEGROWTH=递增量])三、实验内容:1. 使用SQL语句完成下题(1)使用CREATE DATABASE语句创建一个名为“st”数据库,要求①主要数据文件:逻辑文件名为“stdata1”,实际文件名为“stdata1.mdf”②事务日志文件:逻辑文件名为“stlog1”,实际文件名为“stlog1.ldf”③初始容量均为3MB,最大容量均为10MB,递增量均为1MB。
C#数据库连接操作大全+sql语句大全下面是c#与数据库的连接及增删改除的各种操作,全部经过上机验证。
学习软件的过程中,数据库起着至关重要的作用。
软件行业里面有句老话,不会数据库就没有入门。
软件思想可以慢慢培养,但是数据库的链接是一定要学会的。
增删改查各种都不能少。
创建数据库创建之前判断该数据库是否存在if exists (select * from sysdatabases where name='databaseName') drop database 'databaseName' go Create DATABASE database-name删除数据库drop database dbname备份sql server--- 创建备份数据的device USE master EXEC sp_addumpdevice'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat' --- 开始备份BACKUP DATABASE pubs TO testBack创建新表create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..) 根据已有的表创建新表:A:create table tab_new like tab_old (使用旧表创建新表) B:create table tab_new as select col1,col2… from tab_old definition only删除新表drop table tabname增加一个列Alter table tabname add column col type 注:列增加后将不能删除。
DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。
c#连接SQLServer数据库1.建⽴⼀个控制台测试程序简单实现using (SqlConnection conn = new SqlConnection("Server=.;database=DB_Test;uid=sa;pwd=111111")){//查询conn.Open();SqlCommand cmd = new SqlCommand("select * from test", conn);SqlDataAdapter da = new SqlDataAdapter(cmd);DataSet ds = new DataSet();da.Fill(ds);Console.WriteLine("查询出条⽬数:" + ds.Tables[0].Rows.Count.ToString());}using (SqlConnection conn = new SqlConnection("Server=.;database=DB_Test;uid=sa;pwd=111111")){//删除conn.Open();SqlCommand cmd1 = new SqlCommand("delete from test where id=14", conn);int rows = cmd1.ExecuteNonQuery();Console.WriteLine("删除条⽬数:" + rows);}Console.Read();2.连接字符串配置在config⽂件中<?xml version="1.0" encoding="utf-8" ?><configuration><appSettings><add key="ConnASK" value="Server=.;database=DB_Test;uid=sa;pwd=111111"/></appSettings></configuration>读取//数据库连接字符串(.config来配置).public static string connectionString = System.Configuration.ConfigurationManager.AppSettings["ConnASK"];static void Main(string[] args){try{using (SqlConnection conn = new SqlConnection(connectionString)){//查询conn.Open();SqlCommand cmd = new SqlCommand("select * from test", conn);SqlDataAdapter da = new SqlDataAdapter(cmd);DataSet ds = new DataSet();da.Fill(ds);Console.WriteLine("查询出条⽬数:" + ds.Tables[0].Rows.Count.ToString());}Console.Read();}catch (Exception){throw;}}3.带参数的sql 语句执⾏(动软⽣成的)///<summary>///增加⼀条数据///</summary>public bool Add(Model.test model){StringBuilder strSql=new StringBuilder();strSql.Append("insert into test(");strSql.Append(" testName,testTyp,testTime)");strSql.Append(" values (");strSql.Append(" @testName,@testTyp,@testTime)");SqlParameter[] parameters = {new SqlParameter("@testId", SqlDbType.Int,4),new SqlParameter("@testName", SqlDbType.VarChar,50),new SqlParameter("@testTyp", SqlDbType.VarChar,50),new SqlParameter("@testTime", SqlDbType.Float,4)};parameters[0].Value = model.testId;parameters[1].Value = model.testName;parameters[2].Value = model.testTyp;parameters[3].Value = model.testTime;int rows=ExecuteSql(strSql.ToString(),parameters);if (rows > 0){return true;}else{return false;}}///<summary>///执⾏SQL语句,返回影响的记录数///</summary>///<param name="SQLString">SQL语句</param>///<returns>影响的记录数</returns>public static int ExecuteSql(string SQLString, params SqlParameter[] cmdParms){using (SqlConnection connection = new SqlConnection(connectionString)){using (SqlCommand cmd = new SqlCommand()){try{PrepareCommand(cmd, connection, null, SQLString, cmdParms);int rows = cmd.ExecuteNonQuery();cmd.Parameters.Clear();return rows;}catch (System.Data.SqlClient.SqlException e){throw e;}}}}private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, string cmdText, SqlParameter[] cmdParms) {if (conn.State != ConnectionState.Open)conn.Open();cmd.Connection = conn;mandText = cmdText;if (trans != null)cmd.Transaction = trans;mandType = CommandType.Text;//cmdType;if (cmdParms != null){foreach (SqlParameter parameter in cmdParms){if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) &&(parameter.Value == null)){parameter.Value = DBNull.Value;}cmd.Parameters.Add(parameter);}}}。
C语⾔中操作sqlserver数据库案例教程本⽂使⽤c语⾔来对sql server数据库进⾏操作,实现通过程序来对数据库进⾏增删改查操作。
操作系统:windows 10 实验平台:vs2012 + sql server 2008ODBC简介:开放数据库连接(Open Database Connectivity,ODBC),主要的功能是提供了⼀组⽤于数据库访问的编程接⼝,其主要的特点是,如果应⽤程序使⽤ODBC做数据源,那么这个应⽤程序与所使⽤的数据库或数据库引擎是⽆关的,为应⽤程序的跨平台和可移植奠定了基础。
创建ODBC数据源:控制⾯板——管理⼯具——ODBC数据源(32位)可以看到,这⾥存在三种类型的DSN(数据源名),其中:⽤户DSN:只允创建该DSN的⽤户使⽤该数据源;系统DSN:所有登陆该服务器的⽤户都能使⽤该数据源;⽂件DSN:配置信息保存在⽂件中,所有登陆的⽤户均可使⽤;在本实验中,采⽤系统DSN:点击添加,然后选择SQL Server然后输⼊数据源的名称和所在服务器,我们的数据库是安装在本机上的。
选择以sql server⽤户的⽅式进⾏验证,下图所⽰:这⾥可以设置默认连接的数据库,保持不变,使⽤master作为默认的数据库。
然后点击下⼀步,然后完成,完成后可以测试⼀下。
这就完成了ODBC数据源的创建。
程序测试,数据库中已包含⼀个叫做stu_info的数据库,且其中有⼀张student的学⽣信息表,其包含的字段信息如下:程序设计如下#include<stdio.h>#include<windows.h>#include<sql.h>#include<sqlext.h>#include<sqltypes.h>int main(){SQLRETURN ret;SQLHENV henv;SQLHDBC hdbc;SQLHSTMT hstmt;ret=SQLAllocHandle(SQL_HANDLE_ENV,NULL,&henv);//申请环境句柄ret=SQLSetEnvAttr(henv,SQL_ATTR_ODBC_VERSION,(SQLPOINTER)SQL_OV_ODBC3,SQL_IS_INTEGER);ret=SQLAllocHandle(SQL_HANDLE_DBC,henv,&hdbc);//申请数据库连接句柄ret=SQLConnect(hdbc,(SQLCHAR*)"data_test",SQL_NTS,(SQLCHAR*)"sa",SQL_NTS,(SQLCHAR*)"12345678",SQL_NTS);/*data_test为配置的ODBC数据源名称,这⾥根据⾃⼰的配置进⾏修改*/if(!(ret==SQL_SUCCESS || ret==SQL_SUCCESS_WITH_INFO)){printf("连接数据库失败!\n");return -1;}ret=SQLAllocHandle(SQL_HANDLE_STMT,hdbc,&hstmt);/*执⾏sql语句*/SQLCHAR sql1[]="use stu_info";SQLCHAR sql2[]="select * from student";ret=SQLExecDirect(hstmt,sql1,SQL_NTS);ret=SQLExecDirect(hstmt,sql2,SQL_NTS);if(ret==SQL_SUCCESS || ret==SQL_SUCCESS_WITH_INFO){SQLCHAR str1[50],str2[50],str3[50],str4[50],str5[50],str6[50];SQLINTEGER len_str1, len_str2, len_str3, len_str4, len_str5, len_str6;while(SQLFetch(hstmt)!=SQL_NO_DATA){SQLGetData(hstmt,1,SQL_C_CHAR,str1,50,&len_str1); //获取第⼀列数据SQLGetData(hstmt,2,SQL_C_CHAR,str2,50,&len_str2);SQLGetData(hstmt,3,SQL_C_CHAR,str3,50,&len_str3);SQLGetData(hstmt,4,SQL_C_CHAR,str4,50,&len_str4);SQLGetData(hstmt,5,SQL_C_CHAR,str5,50,&len_str5);SQLGetData(hstmt,6,SQL_C_CHAR,str6,50,&len_str6);printf("%s\t%s\t%s\t%s\t%s\t%s\n",str1,str2,str3,str4,str5,str6);}}SQLFreeHandle(SQL_HANDLE_DBC,hdbc);//释放连接句柄SQLFreeHandle(SQL_HANDLE_ENV,henv);//释放环境句柄return 0;}需要说明的是,在多数环境中,代码会报错,报错信息如下:(SQLCHAR*)⽆法与(SQLWCHAR*)兼容,于是有⼈可能会想到,直接强转为(SQLWCHAR*),但是依然在SQLConnect函数处报错,⽆法连接上数据库,这时需要修改字符集,配置为多字节字符集,操作如下:到此这篇关于C语⾔中操作sqlserver数据库案例教程的⽂章就介绍到这了,更多相关C语⾔操作sqlserver内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!。
实验1 SQL Server数据库的管理【实验目的】(1)了解SQL Server 数据库的逻辑结构和物理结构的特点。
(2)掌握使用SQL Server管理平台对数据库进行管理的方法。
(3)掌握使用T-SQL语句对数据库进行管理的方法。
【实验过程】(1)在SQL Server管理平台中创建数据库。
操作方法:①运行SQL Server管理平台,在管理平台的对象资源管理器中展开服务器。
②右击“数据库”项,在快捷菜单中选择“新建数据库”菜单项。
在新建数据库对话框的数据库名称文本框中输入学生管理数据库名studentsdb,单击“确定”按钮。
(2)查看studentsdb数据库的相关属性。
操作方法:选择studentsdb数据库,在其快捷菜单中选择“属性”菜单项,查看“常规”、“文件”、“文件组”、“选项”、“权限”和“扩展属性”等页面。
(3)修改studentsdb数据库的数据文件的“分配的空间”大小为2MB。
指定“最大文件大小”为5MB。
修改studentsdb数据库的日志文件的大小在每次填满时自动递增5%。
操作方法:打开studentsdb数据库的“属性”对话框,在“文件”选项卡中的数据库文件列表中修改studentsdb数据文件的“分配的空间”大小为2MB。
指定“最大文件大小”为5MB。
修改studentsdb 数据库的日志文件的大小在每次填满时自动递增5%。
(4)完成以下操作:①使用T-SQL语句创建studb数据库,并通过系统存储过程查看系统中的数据库信息;②使用T-SQL语句修改studb数据库的设置:指定数据文件大小为5MB,最大文件大小为20MB,自动递增大小为1MB:③增加一个日志文件,命名为studb_Log2,大小为5MB,最大文件大小为10MB。
④将studb数据库的名称更改为student_db。
⑤使用T-SQL语句DROP DATABASE删除student_db数据库。
⑥删除studentsdb数据库。
c 语言调用sql server数据库函数C语言调用SQL Server数据库函数:一步一步回答引言:在许多实际应用中,需要使用C语言与数据库进行交互,进行数据的增删改查操作。
而其中一个常见的需求就是调用SQL Server数据库函数。
本文将介绍如何使用C语言调用SQL Server数据库函数,以及一些常用的操作。
第一部分:准备工作在开始之前,我们需要完成一些准备工作,确保顺利地调用SQL Server 数据库函数。
1. 安装SQL Server:首先,我们需要安装SQL Server数据库软件。
你可以从微软官网下载适用于你的操作系统的SQL Server版本,并按照提示进行安装。
2. 创建数据库:安装完成后,我们需要创建一个数据库用于测试。
你可以使用SQL Server Management Studio(SSMS)工具创建一个新的数据库,或者使用SQL 命令行工具创建。
3. 创建数据库函数:在我们可以通过C语言调用SQL Server数据库函数之前,我们需要在数据库中创建一个可供调用的函数。
在SSMS或者SQL命令行工具中,输入以下代码创建一个简单的函数:sqlCREATE FUNCTION dbo.MyFunction()RETURNS INTASBEGINDECLARE @result INT;SET @result = 42;RETURN @result;END;此函数名为dbo.MyFunction(),返回一个整数类型的结果。
第二部分:使用C语言调用SQL Server数据库函数完成了准备工作后,我们可以开始使用C语言调用SQL Server数据库函数了。
下面将介绍一些基本的步骤。
1. 包含头文件:在C语言程序中,我们需要包含相应的头文件才能使用与SQL Server相关的函数。
在C文件的开头,加入以下代码:c#include <stdio.h>#include <windows.h>#include <sql.h>#include <sqlext.h>其中,<sql.h>和<sqlext.h>是ODBC接口的头文件,用于与SQL Server 进行交互。
VisualC#动态操作SQLServer数据库实例教程不带参数的SQL语句执行方法以下是不带参数的SQL语句执行方法的代码,它调用通用数据访问类(SqlHelper)执行SqlHelper.ExecuteNonQuery()方法,使用示例为;int val = SqlHelper.ExecuteNonQuery(conn, CommandType.Text, sqlstr, null);其中传递的4个参数:“conn”—为链接字符;“CommandType.T ext”—为SQL命令类型。
这里表示执行SQL 命令文本形式;“sqlstr”—为SQL命令字符;“null”—是以数组形式提供SqlCommand命令中用到的参数列表,这里不是以数据形式,所以为空。
protected void btnExecuteSQL_Click(object sender, EventArgs e){string sqlstr = "select * from “你的数据库名” wheredatediff(year,dateantime,getdate())=0 order by hints desc"; SqlCommand cmd = new SqlCommand();using (SqlConnection conn = newSqlConnection(SqlHelper.ConnectionStringLocalTransaction)) {conn.Open();int val = SqlHelper.ExecuteNonQuery(conn, CommandType.Text, sqlstr, null);Response.Write(" ");}}当ExecuteNonQuery()执行select,结果总是返回-1,ExecuteNonQuery()对于Update、Insert 和 Delete 语句,返回值为该命令所影响的行数。
搭建环境Visual Studio 2008 + SQL Server 2008 + MSODBC(SQL Server 2008已经携带)首先将SQL Server 2008安装好并确保以开放1433端口。
检测方法:打开cmd 输入命令netstat –an回车即可得到下图:给予以上前提我们将SQL Server 的SQL Server身份验证模式打开,确保能够使用用户sa 身份登录数据库进行操作。
(这很重要)打开的方法是找到SQL Server 配置管理器将SQL Server网络配置的两个协议中的Named Pipes协议和TCP/IP协议(一共四个)全部打开。
(详细方法可在网上查到)使用sa 身份登录数据库然后创建一个数据库命名为test,在建立一个test表(a varchar(200),b varchar(200))。
配置C语言环境打开Visual Studio 2008 新建项目选择Visual C++ 下的Win32控制台应用程序设置成空项目,并输入以下代码:#include<stdio.h>#include<string.h>#include<windows.h>#include<sql.h>#include<sqlext.h>#include<sqltypes.h>#include<odbcss.h>#define MAXBUFLEN 255SQLHENV henv = SQL_NULL_HENV;SQLHDBC hdbc1 = SQL_NULL_HDBC;SQLHSTMT hstmt1 = SQL_NULL_HSTMT;/*cpp文件功能说明:1.数据库操作中的添加,修改,删除,主要体现在SQL语句上a2.采用直接执行方式和参数预编译执行方式两种*/int main(){RETCODE retcode;//预编译SQL语句UCHAR pre_sql[225] = "insert into test values(?,?)";SQLCHAR ConnStrIn[MAXBUFLEN] = "DRIVER={SQL Server};SERVER=127.0.0.1;UID=sa; PWD=yangsonghe;Trusted_Connection=yes;DATABASE=test; ";//1.连接数据源//1.环境句柄retcode = SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE ,&henv); /*第二个参数原NULL*/retcode =SQLSetEnvAttr(henv,SQL_ATTR_ODBC_VERSION,(SQLPOINTER)SQL_OV_ODBC3,SQL_IS_IN TEGER);//2.连接句柄retcode = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc1);retcode =SQLDriverConnect(hdbc1,NULL,ConnStrIn,SQL_NTS,NULL,NULL,NULL,SQL_DRIVER_NOP ROMPT);//判断连接是否成功if ( (retcode != SQL_SUCCESS) && (retcode !=SQL_SUCCESS_WITH_INFO) ) {printf("连接失败!\n");} else {1.分配一个语句句柄(statement handle)2.创建SQL语句3.执行语句4.销毁语句*/retcode = SQLAllocHandle(SQL_HANDLE_STMT, hdbc1, &hstmt1);//第一种方式//直接执行//添加操作//SQLExecDirect (hstmt1,sql,37);//第二种方式//绑定参数方式char a[200]="bbb";char b[200]="200";SQLINTEGER p = SQL_NTS;//1预编译SQLPrepare(hstmt1,pre_sql,29); //第三个参数与数组大小相同,而不是数据库列相同//2绑定参数值SQLBindParameter(hstmt1,1,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,200,0,&a, 0,&p);SQLBindParameter(hstmt1,2,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,200,0,&b, 0,&p);//3 执行SQLExecute(hstmt1);printf("操作成功!");//释放语句句柄SQLCloseCursor (hstmt1);SQLFreeHandle (SQL_HANDLE_STMT, hstmt1);}//3.断开数据库连接/*1. 断开数据库连接2.释放连接句柄.3.释放环境句柄(如果不再需要在这个环境中作更多连接)*/SQLDisconnect(hdbc1);SQLFreeHandle(SQL_HANDLE_DBC, hdbc1);SQLFreeHandle(SQL_HANDLE_ENV, henv);return(0);}程序中主要还是使用了和MySQL与C语言连接时相同的函数,但SQLDriverConnect函数参数较多且重要,需要着重理解。
实验一SQL Server 2005数据库管理系统一、实验目的:1、了解SQL Server2005的特点2、掌握SQL Server Management Studio、查询编辑器等常用工具的使用3、了解系统数据库和系统表的作用。
二、实验内容:1、使用服务管理器暂停、停止和启动SQL Server服务。
.2、创建一个新服务器组名为“newgroup”,将你旁边同学的计算机注册到该组中。
3、查询编辑器的使用。
在查询编辑器里输入下面的SQL语句,查看结果。
Use pubsGoSelect * from authorsGo4、利用SQL Server Management Studio查看系统数据库和实例数据库结构。
使用SQL ServerSQL Server Management Studio,在数据库northwind中(1)查看表的结构和内容(2)查看视图(3)查看存储过程(4)查看用户和角色5、查看服务器配置信息实验二数据库的创建与操作一、实验目的:1、掌握用SQL Server Management Studio和T-SQL语句创建数据库,查看、设置、修改数据库选项2、掌握用SQL Server Management Studio分离、附加数据库3、掌握用SQL Server Management Studio和T-SQL语句删除数据库二、实验内容:1、创建数据库(1)3.8实训(2)3.9习题三、上机题2、查看、设置、修改数据库选项(1)用SQL Server Management Studio查看数据库基本信息(2)使用系统存储过程sp_helpdb查看数据库信息3、分离数据库选中要分离的数据库,选择“操作”菜单中的“所有任务”,或者直接右击要分离的数据库,在弹出的快捷菜单中选择“所有任务”,然后再选择其子菜单中的“分离数据库”命令。
4、附加数据库5、删除数据库(1)用SQL Server Management Studio删除数据库(2)使用DROP DATABASE语句删数据库正在被其他用户使用的数据库不能被删除,可先断开其连接再删除。
C#连接SQL Server数据库并进行增删查改操作详细代码在下边,直接可以使用设计好的C#界面:INCLUDEPICTURE"../AppData/Roaming/Tencent/Users/785135000/QQ/WinTemp/RichOle/N2ZLQB(2T JX)QI7UJF8I_N9.jpg" \* MERGEFORMATINCLUDEPICTURE "../AppData/Roaming/Tencent/Users/785135000/QQ/WinTemp/RichOle/%60K4)VT6 OKKK_E%5dY6YDS37UO.jpg" \* MERGEFORMAT共3个窗体。
数据库:INCLUDEPICTURE "../AppData/Roaming/Tencent/Users/785135000/QQ/WinTemp/RichOle/_%5bCY0E~ L%7dAOG8)$8C7ABEN5.jpg" \* MERGEFORMAT运行后的界面:INCLUDEPICTURE "../AppData/Roaming/Tencent/Users/785135000/QQ/WinTemp/RichOle/A%7d%25@B P6G%5dA_@7U@%7b_UNS94S.jpg" \* MERGEFORMATINCLUDEPICTURE"../AppData/Roaming/Tencent/Users/785135000/QQ/WinTemp/RichOle/VPCA%7b0L %7b%7dCYFKLX_2H(%5b2BQ.jpg" \* MERGEFORMATINCLUDEPICTURE"../AppData/Roaming/Tencent/Users/785135000/QQ/WinTemp/RichOle/_3ZV2(ORV 9D%5dJ20O8A3J0IO.jpg" \* MERGEFORMATINCLUDEPICTURE"../AppData/Roaming/Tencent/Users/785135000/QQ/WinTemp/RichOle/U(Y0UBG@B YV%5dL%5b$0$8%5b4%5bH6.jpg" \* MERGEFORMATINCLUDEPICTURE"../AppData/Roaming/Tencent/Users/785135000/QQ/WinTemp/RichOle/70%7d$DU7 1P8~NP1CGYCCKHP5.jpg" \* MERGEFORMATINCLUDEPICTURE "../AppData/Roaming/Tencent/Users/785135000/QQ/WinTemp/RichOle/54%25XN%6 0@SPIBMOS29%60(1FVD2.jpg" \* MERGEFORMATINCLUDEPICTURE"../AppData/Roaming/Tencent/Users/785135000/QQ/WinTemp/RichOle/VPK_RN(H( PRCD592RZEO%7dKU.jpg" \* MERGEFORMATINCLUDEPICTURE"../AppData/Roaming/Tencent/Users/785135000/QQ/WinTemp/RichOle/53YUNRN5B LP6ELNEW%25OD)0H.jpg" \* MERGEFORMATINCLUDEPICTURE"../AppData/Roaming/Tencent/Users/785135000/QQ/WinTemp/RichOle/VXQF%7b$M 32RJD(7$_PKX1UL9.jpg" \* MERGEFORMAT代码:(Form1)public partial class Form1 : Form{public Form1(){InitializeComponent();}private void button1_Click(object sender, EventArgs e){Form1_Load(sender, e);}private void Form1_Load(object sender, EventArgs e){try{SqlConnection conn = new SqlConnection();string str = "Data Source=ZWEIQUAN-PC;InitialCatalog=Student;Integrated Security=True";conn.ConnectionString = str;conn.Open();SqlCommand cmd = new SqlCommand();mandText = "select * from 基本信息表";cmd.Connection = conn;SqlDataAdapter sda = new SqlDataAdapter(cmd);DataSet ds = new DataSet();sda.Fill(ds, "基本信息表");this.dataGridView1.DataSource = ds;this.dataGridView1.DataMember = "基本信息表";this.dataGridView1.AutoGenerateColumns = true;for (int i = 1; i < this.dataGridView1.ColumnCount; i++){this.dataGridView1.Columns[i].DefaultCellStyle.SelectionBackColor = Color.White;this.dataGridView1.Columns[i].DefaultCellStyle.SelectionForeColor = Color.Black;this.dataGridView1.Columns[i].ReadOnly = true;}conn.Close();}catch(Exception ee){MessageBox.Show("错误:"+ee.Message,"错误");}}private void button2_Click(object sender, EventArgs e){if (this.dataGridView1.SelectedCells==null){MessageBox.Show("请选择要删¦除的项!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);}else{if (this.dataGridView1.CurrentCell.ColumnIndex == 0){string st = this.dataGridView1[1,this.dataGridView1.CurrentCell.RowIndex].Value.ToString();SqlConnection conn = new SqlConnection();string str = "Data Source=ZWEIQUAN-PC;InitialCatalog=Student;Integrated Security=True";conn.ConnectionString = str;conn.Open();SqlCommand cmd = new SqlCommand();mandText = "delete from 基本信息表 where 姓名='" + st + "'";cmd.Connection = conn;cmd.ExecuteNonQuery();conn.Close();}}}private void button3_Click(object sender, EventArgs e){if (this.textBox1.Text.Trim() == ""){MessageBox.Show("请输入要查询的姓名!", "提示");}else{SqlConnection conn = new SqlConnection();string str = "Data Source=ZWEIQUAN-PC;InitialCatalog=Student;Integrated Security=True";conn.ConnectionString = str;conn.Open();SqlCommand cmd = new SqlCommand();mandText = "select * from 基本信息表 where 姓名='" + this.textBox1.Text.Trim() + "'";cmd.Connection = conn;SqlDataAdapter sda = new SqlDataAdapter(cmd);DataSet ds = new DataSet();sda.Fill(ds);this.dataGridView1.DataSource = ds;this.dataGridView1.DataMember = ds.Tables[0].ToString();this.dataGridView1.AutoGenerateColumns = true;conn.Close();}}private void button4_Click(object sender, EventArgs e){Form2 f = new Form2();f.Show();}private void button5_Click(object sender, EventArgs e){Form3 f = new Form3();f.id = Convert.ToInt32(this.dataGridView1[0,this.dataGridView1.CurrentCell.RowIndex].Value.ToString());f.Show();}}(Form2)public partial class Form2 : Form{public Form2(){InitializeComponent();}private void Form2_Load(object sender, EventArgs e){comboBox1.Items.Add("男");comboBox1.Items.Add("女");comboBox2.Items.Add("计算机11-1班");comboBox2.Items.Add("计算机11-2班");comboBox2.Items.Add("计算机11-3班");comboBox1.DropDownStyle = ComboBoxStyle.DropDownList;comboBox2.DropDownStyle = ComboBoxStyle.DropDownList;get_bh();}private void get_bh(){SqlConnection conn = new SqlConnection();string str = "Data Source=ZWEIQUAN-PC;Initial Catalog=Student;Integrated Security=True";conn.ConnectionString = str;conn.Open();SqlCommand cmd = new SqlCommand();mandText = "select * from 基本信息表";//mandText = "select isnull(max(编号),0)+1 from 基本信息表";cmd.Connection = conn;SqlDataAdapter sda = new SqlDataAdapter(cmd);DataSet ds = new DataSet();sda.Fill(ds);int t = ds.Tables[0].Rows.Count;int bh = t - 1;this.textBox1.Text = (Int32.Parse(ds.Tables[0].Rows[bh]["编号"].ToString()) + 1).ToString();//this.textBox1.Text = cmd.ExecuteScalar().ToString();conn.Close();}private void button1_Click(object sender, EventArgs e){if (textBox2.Text.Trim() == "" || textBox3.Text.Trim() == "" || comboBox1.Text.Trim() == "" || comboBox2.Text.Trim() == ""){MessageBox.Show("请输入完整信息!", "错误", MessageBoxButtons.OK,MessageBoxIcon.Error);}else{string str1 = textBox3.Text.Trim();int l = str1.Length;for (int i = 0; i < l; i++){if (!char.IsNumber(str1[i])){MessageBox.Show("年龄输入有误!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);textBox3.SelectAll();textBox3.Focus();return;}}SqlConnection conn = new SqlConnection();string str = "Data Source=ZWEIQUAN-PC;InitialCatalog=Student;Integrated Security=True";conn.ConnectionString = str;conn.Open();SqlCommand cmd = new SqlCommand();mandText = "insert into 基本信息表(编号,姓名,性别,年龄,班级)values(@编号,@姓名,@性别,@年龄,@班级)";cmd.Connection = conn;cmd.Parameters.Add("@编号", SqlDbType.Int);cmd.Parameters.Add("@姓名", SqlDbType.NVarChar, 50);cmd.Parameters.Add("@性别", SqlDbType.NVarChar, 50);cmd.Parameters.Add("@年龄", SqlDbType.Int);cmd.Parameters.Add("@班级", SqlDbType.NVarChar, 50);cmd.Parameters["@编号"].Value = textBox1.Text.Trim();cmd.Parameters["@姓名"].Value = textBox2.Text.Trim();cmd.Parameters["@性别"].Value = comboBox1.Text.Trim();cmd.Parameters["@年龄"].Value = textBox3.Text.Trim();cmd.Parameters["@班级"].Value = comboBox2.Text.Trim();cmd.ExecuteNonQuery();conn.Close();this.Close();}}private void button2_Click(object sender, EventArgs e){this.Close();}}(Form3)public partial class Form3 : Form{public Form3(){InitializeComponent();}public int id;private void Form3_Load(object sender, EventArgs e){textBox1.Text = id.ToString();SqlConnection conn = new SqlConnection("Data Source=ZWEIQUAN-PC;Initial Catalog=Student;Integrated Security=True");SqlCommand cmd = new SqlCommand();cmd.Connection = conn;conn.Open();mandText = "select * from 基本信息表 where 编号=" +id.ToString();SqlDataAdapter sda = new SqlDataAdapter(cmd);DataSet ds = new DataSet();sda.Fill(ds);if (ds.Tables[0].Rows.Count == 1){this.textBox2.Text = (ds.Tables[0].Rows[0]["姓名"].ToString());this.textBox3.Text = (ds.Tables[0].Rows[0]["性别"].ToString());this.textBox4.Text = (ds.Tables[0].Rows[0]["年龄"].ToString());this.textBox5.Text = (ds.Tables[0].Rows[0]["班级"].ToString());conn.Close();}}private void button1_Click(object sender, EventArgs e){if (textBox2.Text.Trim() == "" || textBox3.Text.Trim() == "" || textBox4.Text.Trim() == "" || textBox5.Text.Trim() == ""){MessageBox.Show("请输入完整信息!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);}else{string str1 = textBox4.Text.Trim();int l = str1.Length;for (int i = 0; i < l; i++){if (!char.IsNumber(str1[i])){MessageBox.Show("年龄输入有误!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);textBox4.SelectAll();textBox4.Focus();return;}}SqlConnection conn = new SqlConnection();string str = "Data Source=ZWEIQUAN-PC;InitialCatalog=Student;Integrated Security=True";conn.ConnectionString = str;conn.Open();SqlCommand cmd = new SqlCommand();mandText = "update 基本信息表 set 编号=@编号,姓名=@姓名,性别=@性别,年龄=@年龄,班级=@班级 where 编号=@编号";cmd.Connection = conn;cmd.Parameters.Add("@编号", SqlDbType.Int);cmd.Parameters.Add("@姓名", SqlDbType.NVarChar, 50);cmd.Parameters.Add("@性别", SqlDbType.NVarChar, 50);cmd.Parameters.Add("@年龄", SqlDbType.Int);cmd.Parameters.Add("@班级", SqlDbType.NVarChar, 50);cmd.Parameters["@编号"].Value = textBox1.Text.Trim();cmd.Parameters["@姓名"].Value = textBox2.Text.Trim();cmd.Parameters["@性别"].Value = textBox3.Text.Trim();cmd.Parameters["@年龄"].Value = textBox4.Text.Trim();cmd.Parameters["@班级"].Value = textBox5.Text.Trim();cmd.ExecuteNonQuery();conn.Close();this.Close();}}private void button2_Click(object sender, EventArgs e){this.Close();}}注:"Data Source=ZWEIQUAN-PC;Initial Catalog=Student;Integrated Security=True" ZWEIQUAN-PC:计算机名Student:对应的数据库名称。
实验4使用C语言操作SQL Server数据库
1.实验目的与要求:
1.1配置SQL Server ODBC数据源
1.2C语言与SQL Server2005数据库连接
1.3使用C语言操作SQL Server数据库
2.实验环境与实验器材:
计算机,网络环境,投影设备。
实验相关软件:Window xp、PowerDesigner、SQL Server2008。
3.实验内容与步骤
3.1配置SQL Server ODBC数据源
3.2创建students数据库,并在其中创建表student、course、sc,要求如下:
student
sno sname ssex sage sdept
0611101李勇男21计算机系0611102刘晨男20计算机系0611103王敏女20计算机系0611104张小红女19计算机系0621101张立男20信息管理系0621102吴宾女19信息管理系0621103张海男20信息管理系0631101钱小平女21通信工程系0631102王大力男20通信工程系0631103张姗姗女19通信工程系
Course sc 3.3
编写C 程序,在C 程序中完成对SQL Server 数据库的操作,要求如下:
1).查询计算机系的男生姓名和年龄
2).查询每个学生的选课门数和平均成绩,并按照平均成绩的降序显示结果。
3).查询成绩在80分以上的学生姓名、课程名和成绩,并按成绩的降序排列;4).查询哪些课程没有人选,要求列出课程号和课程名;
5).
查询有考试成绩的所有学生的姓名、课程名和成绩,要求将查询结果保存到一张新
cno cname credit semster c001高等数学41c002大学英语31c003大学英语32c004计算机文化学22c005VB 23c006数据库基础45c007数据结构44c008
计算机网络
4
4
sno cno grade 0611101c001960611101c002800611101c003840611101c005620611102c001920611102c002900611102c004840621102c001760621102c004850621102c005730621102c007NULL 0621103c001500621103c004800631101c001500631101c004800631102c007NULL 0631103c004780631103c005650631103
c007
NULL
的永久表中,假设新表名为new_sc;
6).查询选修VB的学生学号、姓名、所在系和成绩,并对所在系进行如下处理:当所在系为“计算机系”时,显示“CS”;当所在系为“信息管理系”时,显示“IS”;当所在系为“通信工程系”时,显示“CO”;对其他系,均显示“OTHERS”。
7).查询“C001”课程的考试成绩高于“C001”课程的平均成绩的学生的学号和“C001”的课程成绩。
8).查询计算机系考试成绩最高的学生姓名;
9).将计算机系所有选修“计算机文化学”课程的学生成绩加10分。
10).删除信息管理系考试成绩小于50分的学生的该门程序的修课记录。
11).在SC表中插入一条新记录,学号为“0621105”,选修课程的课程号为“C001”,成绩暂缺。
4.思考与总结。