c语言视频教程连接SqlServer2000,为什么连接不了呢,提示Connect failed.,请问哪边出错了?求高手指点

请问c语言能否使用sqlserver2000(急,在线等待)
请问c语言能否使用sqlserver2000(急,在线等待)
sky_blueqironhappydreamer、icevi、sky_blueChiff1113817
如果可以的话,请给出具体的连接程序,立即给分 &
--------------------------------------------------------------- &
当然可以,用嵌入式语句么,但有一定的格式,需要注明是使用了sql语句, &
可惜,一下子想不起来了,等我去找找书尽快告诉你 &
--------------------------------------------------------------- &
你在SQL &2000的帮助里找ESQL/C就可以找到。 &
--------------------------------------------------------------- &
我贴一点给你 &
int &main(int &argc, &char &*argv[]) &
& & & &{ &
& & & &LOGINREC* & & & & & & & & &// &login &rec &pointer &
& & & &DBPROCESS* & & & & & & &// &SQL &Server &connection &structure &pointer &
& & & &char & & & & & & & &cmd[150]; & & &// &command &buffer &
& & & &char & & & & & & & &server[30]; &// &server &name &buffer &
& & & &int & & & & & & & & &x &= &1; & & & & & &// &command &line &counter &
& & & &STATUS & & & & & & & & & & & & &// &return &code &
& & & &const &char* & &// &pointer &for &version &string &
& & & &*server &= &'\0'; & & & & & & & & &// &null &start &these &two &buffers &
& & & &*cmd &= &'\0'; &
& & & &if(argc &== &1) & & & & & & & & & & &// &if &no &server &name, &request &it &
& & & & & & & &{ &
&& && && && & & & &printf(&Enter &Server &Name: &&); &
&& && && && & & & &gets(server); &
& & & & & & & &} &
& & & &else & & & & & & & & & & & & & & & & & & & &// &else &it &was &input &as &first &arg &
& & & & & & &strcpy(server,argv[1]); &
& & & &if(argc && &2) & & & & & & & & & & & &// &if &no &login &id, &request &it &
& & & & & & & &{ &
& & & & & & & &printf(&Enter &User &Name: &&); &
& & & & & & & &gets(cmd); &
& & & & & & & &} &
& & & &else & & & & & & & & & & & & & & & & & & & &// &otherwise &it &was &input &as &second &arg. &
& & & & & & & &strcpy(cmd,argv[2]); &
& & & &// &check &to &see &if &communications &layer &was &loaded &(DOS &ONLY) &
& & & &if((sqlversion &= &dbinit()) &== &(BYTE &*)NULL) &
& & & & & & & &{ &
& & & & & & & &// &DOS &TSR &(DBNMPIPE.EXE) &is &not &loaded, &don't &bother &going &any &farther &
& & & & & & & &printf(&Error &in &DB-Library &initialization, &exiting\n&); &
& & & & & & & &return &1; &
& & & & & & & &} &
& & & &else &
& & & & & & & &printf(&DB-Library &version: &%s\n&,sqlversion); & &// &print &dblib &version &
& & & &dbsettime(30); & & & & & & & & & &// &set &timeouts &to &30 &seconds &
& & & &// &set &error/msg &handlers &for &this &program &
& & & &dbmsghandle((DBMSGHANDLE_PROC)msg_handler); &
& & & &dberrhandle((DBERRHANDLE_PROC)err_handler); &
& & & &login &= &dblogin(); & & & & & &// &get &a &login &rec &
& & & &DBSETLUSER(login,cmd); & &// &set &login &id &
& & & &DBSETLHOST(login,&SQL &EXAMPLE&); & & & &// &set &host &name &for &sp_who &
& & & &DBSETLVERSION(login, &DBVER60); &
& & & &// &To &use &secure, &or &trusted, &connection, &uncomment &the &following &line. &
& & & &// &DBSETLSECURE &(login); &
& & & &// &open &connection &to &requested &server. & &Pass &null &server &name &for &local &
& & & &// &connection, &if &name &not &entered. &
& & & &if((dbproc &= &dbopen(login,(*server) &? &server &: &(char &*)NULL)) &== &(DBPROCESS &*)NULL) &
& & & & & & & &{ &
& & & & & & & &// &no &one &answered, &so &couldn't &connect &or &error &occurred &
& & & & & & & &printf(&Login &failed\n&); &
& & & & & & & &return &1; &
& & & & & & & &} &
& & & &else &
& & & & & & & &{ &
& & & & & & & &// &loop &on &command &input &until &quit &or &exit &appears &in &first &4 &bytes. &
& & & & & & & &while((strnicmp(cmd,&quit&,4) &!= &0) &&& &(strnicmp(cmd,&exit&,4)!=0)) &
& & & & & & & & & & & &{ &
& & & & & & & & & & & &printf(&%d& &&, &x++); & & & & & & & & & & & & & & & &// &print &command &prompt &
& & & & & & & & & & & &gets(cmd); & & & & & & & & & & & & & & & & & & & & & & & & & &// &get &command &
& & & & & & & & & & & &if(strnicmp(cmd,&go&,2) &== &0) & & & & & & &// &is &it &go &
& & & & & & & & & & & & & & & &{ &
& & & & & & & & & & & & & & & &if(dbsqlexec(dbproc) &== &FAIL) & & &// &execute &command &
& & & & & & & & & & & & & & & & & & & &{ &
& & & & & & & & & & & & & & & & & & & &// &problem &occurred, &just &try &another &command &
& & & & & & & & & & & & & & & & & & & &printf(&Error &in &executing &command &batch!\n&); &
& & & & & & & & & & & & & & & & & & & &x &= &1; &
& & & & & & & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & & & & & &} &
& & & & & & & & & & & & & & & &// &command &executed &correctly, &get &results &information &
& & & & & & & & & & & & & & & &while((retc &= &dbresults(dbproc)) &!= &NO_MORE_RESULTS) &
& & & & & & & & & & & & & & & & & & & &{ &
& & & & & & & & & & & & & & & & & & & &if &(retc &== &FAIL) & & & & & & & & & & &// &if &error &get &out &of &loop &
& & & & & & & & & & & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & & & & & &// &headers &and &data &could &be &printed &here &with &only &two &
& & & & & & & & & & & & & & & & & & & &// &function &calls, &dbprhead(dbproc), &and &dbprrow(dbproc), &
& & & & & & & & & & & & & & & & & & & &// &which &would &output &the &headers, &and &all &the &data &to &
& & & & & & & & & & & & & & & & & & & &// &standard &output. & &However, &that &isn't &very &informative &
& & & & & & & & & & & & & & & & & & & &// &toward &understanding &how &this &data &is &obtained &and &
& & & & & & & & & & & & & & & & & & & &// &processed, &so &I &do &it &the &hard &way, &one &column &at &a &time. &
& & & & & & & & & & & & & & & & & & & &PrintHeaders(dbproc); & & & & & & &// &print &header &data &
& & & & & & & & & & & & & & & & & & & &// &loop &on &each &row, &until &all &read &
& & & & & & & & & & & & & & & & & & & &while((retc= &dbnextrow(dbproc))!=NO_MORE_ROWS) &
& & & & & & & & & & & & & & & & & & & & & & & &{ &
& & & & & & & & & & & & & & & & & & & & & & & &if(retc &== &FAIL) & & & & & & & &// &if &fail, &then &clear &
& & & & & & & & & & & & & & & & & & & & & & & & & & & &{ & & & & & & & & & & & & & & & & & & &// &connection &completely, &just &
& & & & & & & & & & & & & & & & & & & & & & & & & & & &dbcancel(dbproc); & & &// &in &case. &
& & & & & & & & & & & & & & & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & & & & & & & & & & & & & &} &
& & & & & & & & & & & & & & & & & & & & & & & &else &
& & & & & & & & & & & & & & & & & & & & & & & & & & & &PrintRow(dbproc); & & &// &else &print &the &current &row &
& & & & & & & & & & & & & & & & & & & & & & & &} &
& & & & & & & & & & & & & & & & & & & &if &(DBCOUNT(dbproc) &== &1L) & &// &print &the &row &count &
& & & & & & & & & & & & & & & & & & & & & & & &printf(&(1 &row &effected)\n&); &
& & & & & & & & & & & & & & & & & & & &else &
& & & & & & & & & & & & & & & & & & & & & & & &printf(&(%ld &rows &effected)\n&,DBCOUNT(dbproc)); &
& & & & & & & & & & & & & & & & & & & &} & & & & & & & & & & & & & & & & & & & & & & & & & & &// &end &while(dbresults()) &
& & & & & & & & & & & & & & & &x &= &1; & & & & & & & & & & & & & & & & & & & & & &// &reset &command &line &counter &
& & & & & & & & & & & & & & & &} &
& & & & & & & & & & & &else &
& & & & & & & & & & & & & & & &{ &
& & & & & & & & & & & & & & & &strcat(cmd,& &&); & & & & & & & & & & & &// &go &not &detected, &so &put &space &
& & & & & & & & & & & & & & & &dbcmd(dbproc,cmd); & & & & & & & & & &// &between &each &command &and &set &in &
& & & & & & & & & & & & & & & &} & & & & & & & & & & & & & & & & & & & & & & & & & & &// &dbproc. &
& & & & & & & & & & & &} &// &end &while() &
& & & & & & & &dbclose(dbproc); & & & & & & & & & & & & & & & &// &quit/exit &input, &close &connection &
& & & & & & & &// &print &adios &and &exit. &
& & & & & & & &printf(&SQL &Server &Connection &to &%s &closed, &bye &bye.\n&,server); &
& & & & & & & &return &0; &
& & & & & & & &} &
& & & &} &当前位置:&&
★高分请教一个简单问题,关于JSP连接SQLServer2000★
&&&&来源:&互联网& 发布时间:
本人对SQLServer2000不是太了解,但急需了解这个问题,请高手给个完整的配置过程。
问题是这样的: 我想用JSP页面调用SQL server2000的数据库,譬如有这样的语句:
..........
Conn=DriverManager.getConnection("jdbc:odbc:soft","user","jsp");
..........
我想知道怎么样在SQL server2000中配置数据源soft,如何建立jdbc:odbc桥?并且使
该soft数据源连接一个已经建立好的数据库softdown。请问这个过程该如何配置,我配置
总是出错。
用控制面板里面的odbc数据源呀,设置一下用户名和口令,制定默认数据库,测试一下连接就可以了。
不知道你安装sql server的时候是不是选择使用sql server分配的帐户,而不是选windows帐户。
ewang_365 (苏37也坠毁)
俺以前遇到过这个问题,偶用的是jrun服务器,sqlserver数据库,当然驱动程序是用专用的驱动程序。
也遇到过你所说的问题,但是当俺把jrun的驱动程序,升级了一下就可以了。
我用sun公司自己带的jdbc:odbc驱动程序没有问题。
当然是在你用户名和密码设置正确的情况下。
数据源添加是在控制面版里面做的/
你要用odbc桥,先在odbc建立到数据库的连接。
odbc连接配置在控制面板。soft是连接名字。
本页相关标签:
相关技术文章: &&&&
在java应用程序中,可不可以等待某个线程执行完后才执行后面的代码?
同意楼上的,看个例子
import java.io.*;
public class MethodTest {
static PrintWriter out = new PrintWriter(System.out,true);
public static void main(String[] args) {
FirstThread first = new FirstThread();
SecondThread second = new SecondThread();
first.start();
second.start();
//本来程序中只有主线程,现在多了两个线程
out.println("Waiting for first thread to finish...");
first.join()...... &&&&
接口:Readerer
public interface Readerer{
public void renderAreaContainer(AreaContainer area);
一个抽象类Box:
abstract public class Box {
protected A
protected AreaTree areaT
abstract public void render(Renderer renderer);
类:AreaContainer:
public class AreaContainer extends Box{
public void render(Renderer renderer) {
renderer.renderAreaContainer(this);
问题来了:
为什么在class AreaContainer 中没有实现class AreaContainer 的 public void renderAreaContainer(AreaContainer area);就直接用了?
注:以上为三个文件,...... &&&&
有关老系统,linux下的,用的数据库是PostgreSQL。
现在我想在windows下开发jsp程序,调试好了在放到linux下,但是在windows下调试时要用到数据库,数据库怎么解决?
可以使用, 但是必须要用 cygwin , 是一个在 windows 下模拟 unix 环境
的一个软件, . 具体可以在 google 上查一查, 还需要
一个 cyg-ipc 的东西, 可以在 cygwin 中查到.
我也是从 linux 转到 win2k, 但是跑了几天, 2k 崩溃了以后, postgresql
在数据查询的时候就出错了, 至少是从我的程序中出错的. 具体没有看, 所以
可以到 http://S......&nbsp最新技术文章: &&&&
请问visual age for java 与 webphere studio 的区别?
visual age for java已经不在出新版本了,WSAD是它的下一代产品。
visual age for java最多到版本4,现在WSAD已经版本5了,WTE也已经到版本5了。
...... &&&&
看完了&JSP动态网页入门实务&,可感觉还好多东西都不懂.有好的书推荐一本..
探索JSP的小菜鸟..望大家多多指教.因为我实在是太菜了.
jsp核心技术详解
...... &&&&
import java.sql.*;
public class Dbconn
String sDBDriver="org.gjt.mm.mysql.Driver";
String sConnStr="'jdbc:mysql://localhost/sinomos?useUnicode=true&characterEncoding=UTF8','root','123456')";
Connection conn=
ResultSet rs=
public Dbconn()
Class.forName(sDBDriver);
catch(java.lang.ClassNotFoundException e)
System.err.println(e.getMessage());
public void executeInsert(String sql)
......&nbsp
特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!
(C)2012-,站长邮箱:www_169it_(请将#改为@)posts - 50,&
comments - 689,&
trackbacks - 0
&&& 连接SQL Server2000并不复杂,一般有问题,一是检查自己的程序,而是检查驱动,三就是SQL Server2000最好打sp3以上的补丁,现在sp4都有了。
&&& 1、在数据库中建库,建表:
&&& create table book(bookId varchar(50) primary key,bookName varchar(50),publisher varchar(100),price float);
&&& insert into book values('1001','Tomcat与Java Web开发技术详解','电子工业出版社',45.00);
&&& insert into book values('1002','精通Struts:基于MVC的Java Web设计与开发','电子工业出版社',49.00);
&&& insert into book values('1003','精通Hibernater:Java对象持久化技术详解','电子工业出版社',59.00);
&&& insert into book values('1004','精通EJB','电子工业出版社',59.00);
&&& insert into book values('1005','J2EE应用与BEA Weblogic Server','电子工业出版社',56.00);
&&& 2、创建Web应用,注意Web应用的目录结构。
&&& 编写jsp程序:
&&& &%@ page contentType="text/ charset=gb2312" language="java" import="java.sql.*"%&
&&& &html&
&&& &body&
&&& 以下是从Ms SQL Server2000数据库读取的数据:&hr&
&&& &table border=1&
&tr&&td&id&/td&&td&书名&/td&&td&出版社
&/td&&td&价格&/td&&/tr&
//注意黑体字
& && & Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
& && & Connection &&& con=java.sql.DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=books","sa","");
& && & Statement stmt=con.createStatement();
&&& &&& ResultSet rst=stmt.executeQuery("select * from book");
&&& &&& while(rst.next())
&&& &&& & & out.println("&tr&");
&&& &&& & & out.println("&td&"+rst.getString("bookId")+"&/td&");
&&& &&& & & out.println("&td&"+rst.getString("bookName")+"&/td&");
&&& && & && out.println("&td&"+rst.getString("publisher")+"&/td&");
&&& &&& & & out.println("&td&"+rst.getFloat("price")+"&/td&");
&&& &&& & & out.println("&/tr&");
&& && & //关闭连接
& &&& & rst.close();
&& && & stmt.close();
&& && & con.close();
& &&& & %&&&&
&&& &/table&
&&& &/body&
&&& &/html&
&&& 3、将msbase.jar,mssqlserver.jar,msutil.jar这三个驱动包放到tomcat\common\lib下。
&&& 4、运行tomcat,在浏览器浏览:
阅读(16486)
&re: 使用JDBC连接SQL Server2000
挚为感谢!&&&&&&
&re: 使用JDBC连接SQL Server2000
请问如何给SQL打补丁,我直接运行了安装程序,安装在C盘里,可是数据库连接还是出现问题:
13:50:25 CST 2005: 成功注册JDBC驱动程序com.microsoft.jdbc.sqlserver.SQLServerDriver
Sun Nov 06 13:50:25 CST 2005: 成功创建连接池mysql
Sun Nov 06 13:50:28 CST 2005: 无法创建下列URL的连接: jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=bbs
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket&&&&&&
&re: 使用JDBC连接SQL Server2000
SQL Server 2000的补丁可以到微软网站下载。安装方式跟大多是软件一样。&&&&&&
&re: 使用JDBC连接SQL Server2000
谢谢了,我也成功了,搞了两天,终于成功了,不过要告诉大家一个问题,在windowsxp下一定要打补丁要不是不能成功的!再一次谢谢楼主!&&&&&&
&re: 使用JDBC连接SQL Server2000
在Eclipse里下面两句话老是出错,原因不明,我装过了JDBC驱动了,环境变量也设好了。我也将三个sbase.jar,mssqlserver.jar,msutil.jar文件Copy到了\j2sdk1.4.2_09\jre\lib\ext目录下但是在Eclipse加这两句就出错,
Class.forName(&com.microsoft.jdbc.sqlserver.SQLServerDriver&).newInstance();
Connection con=DriverManager.getConnection(&jdbc:microsoft:sqlserver:DatabaseName=abc&);
&&&&&&
&re: 使用JDBC连接SQL Server2000
111:
你可以参考jsp连接mysql的那篇文章。
只是驱动不同以及连接方式不同,其他的都一样。&&&&&&
&re: 使用JDBC连接SQL Server2000
请问:我用的是 xp 系统,需要连 SQL Server2000 数据库,需要下什么补丁呢?谢谢&&&&&&
&re: 使用JDBC连接SQL Server2000
xp跟2000一样&&&&&&
&re: 使用JDBC连接SQL Server2000
我的SQL SERVER2000数据库连接不成功 ,我有三个驱动程序msbase.jar,mssqlserver.jar,msutil.jar,可是还不成功,怎么办&&&&&&
&re: 使用JDBC连接SQL Server2000
xiaomao:
这种情况比较多,最好仔细找我说的步骤去做。然后看是哪步出错了&&&&&&
&re: 使用JDBC连接SQL Server2000
斑竹,我的代码和你的一摸一样,驱动程序也没问题,可就是连不上,我装了oracle,会不会是它的原因呢?&&&&&&
&re: 使用JDBC连接SQL Server2000
是啊,我的也是连接不上啊~&&&&&&
&re: 使用JDBC连接SQL Server2000
秋水翁
你的问题在CSDN中好像已经找到是1433端口的问题。
xx可以参考一下。&&&&&&
&re: 使用JDBC连接SQL Server2000
我完全按照您的方法做了,但是除了数字,都是乱码,请问您是用什么办法解决的?
谢谢&&&&&&
&re: 使用JDBC连接SQL Server2000
很奇怪,我再刷新一下,就正常了,呵呵,谢谢&&&&&&
&re: 使用JDBC连接SQL Server2000
我打了SP3的补丁后还是出现java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket ,是什么问题啊.谢谢.@ss
&&&&&&
&re: 使用JDBC连接SQL Server2000
还是不行啊,究竟怎么回事&&&&&&
&re: 打sp3后
我打sp3时出现:
Windows找不到文件'x86\setupaql.exe'.
各位高手弟兄
能给解说一下不&&&&&&
&re: 使用JDBC连接SQL Server2000
帮忙看看什么错误
org.apache.jasper.JasperException: Exception in JSP: /lib/testsqljdbc2.jsp:10
//注意黑体字
10:
Class.forName(&com.microsoft.jdbc.sqlserver.SQLServerDriver&).newInstance();
11:
Connection
con=java.sql.DriverManager.getConnection(&jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=master&,&guest&,&&);
12:
Statement stmt=con.createStatement();
13:
ResultSet rst=stmt.executeQuery(&select * from book&);
java.lang.ClassNotFoundException: com.microsoft.jdbc.sqlserver.SQLServerDriver
&&&&&&
&re: 使用JDBC连接SQL Server2000
我想问一下我的sql server2000 打补丁的时候怎么  老不能安装 还提示 "以前进行的程序安装创建了挂起的文件操作,运行安装程序之前必须重新启动计算机" 可是我重新启动了好几次都不管用啊
各位高手请问如何解决啊?? 谢谢啊&&&&&&
&re: 使用JDBC连接SQL Server2000
什么地方才能下载到SP3呢?
能不能给个详细的地址&&&&&&
&re: 使用JDBC连接SQL Server2000
@aku
找我zhangyandee&#&&&&&&
&re: 使用JDBC连接SQL Server2000
@aku
打开注册表编辑器,在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager中找到PendingFileRenameOperations项目,并删除它。这样就可以清除安装暂挂项目。&&&&&&
&re: 使用JDBC连接SQL Server2000
垃圾&&&&&&
&re: 使用JDBC连接SQL Server2000
at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
at com.microsoft.jdbc.sqlserver.tds.TDSConnection.&init&(Unknown Source)
at com.microsoft.jdbc.sqlserver.SQLServerImplConnection.open(Unknown Source)
at com.microsoft.jdbc.base.BaseConnection.getNewImplConnection(Unknown Source)
at com.microsoft.jdbc.base.BaseConnection.open(Unknown Source)
at com.microsoft.jdbc.base.BaseDriver.connect(Unknown Source)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:185)
at org.apache.jsp.MyJsp_jsp._jspService(MyJsp_jsp.java:65)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:386)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:619)
&&&&&&
&re: 使用JDBC连接SQL Server2000
3、将msbase.jar,mssqlserver.jar,msutil.jar这三个驱动包放到tomcat\common\lib下。斑竹,我在tomcat目录下,找不到这个common\lib的目录啊。还有就是我安装myeclipse的时候,装的tomcat6.0。但是在运行.jsp的页面时,必须要运行“MyEclipse Tomcat”才可以浏览我制作的页面,运行“Tomcat 6.x”就报错了。&&&&&&
&re: 使用JDBC连接SQL Server2000
@11对!我也会这样子报错!然后浏览器开补了这个网页,显示“HTTP Status 500 -”怎样怎样的!&&&&&&
正在阅读:
262728293012345678910111213141516171819202122232425262728293031123456
留言簿(35)
好友的blog
我的其他blog
老婆的Blog
积分与排名
阅读排行榜
评论排行榜vs2005与sql server同时安装,如何连接到sql server2005
vs2005与sql server同时安装,如何连接到sql server2005
08-10-15 &匿名提问
C语言课程设计报告-------学生成绩简单管理程序
一、系统菜单的主要功能 (1)输入若干条记录 (2)显示所有记录 (3)按学号排序 (4)插入一条记录 (5)按姓名查找,删除一条记录 (6)查找并显示一条记录 (7)输出统计信息 (新增) (8)从正文中添加数据到结构体数组中 (9)将所有数据写入文件中 (0)退出程序 二、题目分析 该题主要考察学生对结构体,指针,文件的操作,以及C语言算法的掌握,所以完成此道题目要求较强的设计能力,尤其是要有一种大局观的意识。如何调程序也非常重要,通过这个程序可以学习到以前调试短程序没有的的经验。 菜单中的每一个选项都对应一个子程序,子程序的算法几乎囊获了所有C语言学过的技巧,下面就各个子程序中的功能进行说明: 功能1和4的算法相似,输入一条记录到结构体中去,其中有一部很关键,就是通过gets将所有的多余的字符,回车读去,否则就会出错。 功能2是显示所有的记录,通过循环输出,格式也比较重要。 功能3为按学号排序,因为学号定义成了字符数组的形式,因此在运用冒泡法进行排序的时候,要用到strcmp,strcpy等函数。 功能5为按姓名删除记录,先输入姓名,再一一比较,如果没有则返回失败信息,如果找到就将此记录都向前移一位,返回n-1。 功能6的算法在5中就已经体现了,输入姓名,一一比较。 功能7为新增的功能,因为考虑到原来给出的函数中竟然没有对学生成绩的统计功能,因此新增此功能,可以得出所有的记录个数,最高、最低、平均分,并输出相关的学生信息等。 功能8和9是对文件的操作,提前准备好数据。
总体设计一、 仔细阅读系统要求,首先将此系统化分为如下模块(即如下函数) 1、输入初始的学生信息:其中包括学生的姓名、学号和性别以及学生的语文、数学、英语和计算机等相关信息;可用函数cin(stu *p1)来实现此操作。
2、查询模块:可用stu *lookdata(stu *p1)
来实现。找到就输出此学生全部信息包括学生的语文、数学、英语和计算机等的成绩。
3、插入模块:可用insert(
)函数来实现。其中通过学号的大小来比较的,并且以此来排序。 4、输出学生的信息以及成绩:通过学生的姓名来查看学生的语文、数学、英语和计算机等相关成绩,同时也可以分别通过caverage() 、maverage() 、eaverage() 和comaverage()
来输出语文、数学、英语和计算机等成绩的平均分数、最高和最低分数。
5、退出系统:可用一个函数exit()
学生成绩管理系统 请选择相应的数字执行相应的功能:1:是否输入其他数据2:查看数据3:插入数据4:查找数据5:更新数据6:保留数据7:显示或打印数据8:语文成绩状况9:数学成绩状况10:英语成绩状况11:计算机成绩状况12:?13:退出系统
程序中出现的问题及解决方法 问题一、学生初始信息模块:其中包括学生的姓名、学号和性别以及学生的语文、数学、英语和计算机等相关信息;可用函数cin(stu *p1)来实现此操作。当正确输入存在的学生学号,系统进行判断时,提示不存在此学生。
解决办法及步骤:1、一个个输出所有的学生的学号,检查文件中是否有此学生,发现有。
2、既然有此学生,那么检查循环判断是否有此学生的语句发现没有错
3、输出用于循环检查语句中的学生信息,发现乱码
4、仔细分析乱码的原因,最后发现是变量的类型错误,错将学生类型的结构体指针变量定义为了其他类型的指针变量。
问题二、查询模块:可用stu *lookdata(stu *p1)
来实现。找到就输出此学生全部信息包括学生的语文、数学、英语和计算机等的成绩。当正确输入查找信息时,系统却不能够得到所要查找的学生信息以及学生的语文、数学、英语和计算机的成绩。
解决办法及步骤:1、检查所编写的程序代码是否完全正确,若不是,则改之,然后再继续正确输入查找信息看能否得到所要查找的学生信息以及学生的语文、数学、英语和计算机的成绩。
2、检查当我们在输入查找信息时,看是否我们输入的信息有误,若是这样的话,我们应当仔细输入查找信息。 问题三、插入模块:可用insert(
)函数来实现。其中通过学号的大小来比较的,并且以此来排序。当我们输入插入信息时,系统却提示插入不进数据。 解决办法及步骤:1、检查所编写的程序代码是否完全正确,若不是,则改之,然后再继续正确输入插入信息看能否插入进去得到所要插入的学生信息以及学生的语文、数学、英语和计算机的成绩。
2、检查当我们在输入插入信息时,看是否我们输入的插入信息有
C语言课程设计报告一、实践的目的和要求加深对《C语言》课程所学知识的理解,进一步巩固C语言讲法规则。学会编制结构清晰、风格良好、数据结构适当的C语言程序,从而具备解决综合性实际问题的能力二、内容在熟练掌握C语言的基本知识:数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);大程序的功能分解方法(即函数的使用)等。进一步掌握各种函数的应用,包括时间函数、、绘图函数,以及文件的读写操作等三、实践任务1.学生成绩管理系统建立一个5个学生的信息登记表,每个学生和信息包括:学号,姓名,和3门课程的成绩(MATH,C,ENGLISH)。程序运行时显示一个简单的菜单
例如:(1):信息输入(INPUT)(2):显示信息(DISPLAY)(3):总分统计(COUNT)(4):总分排序(SORT)(5):查询(QUERY)其中:(1):对5个学生的信息进行输入;(2):显示当前学生记录的信息,若无记录,则给出提示信息;(3):对每个学生的3门课程统计总分;(4):对5个学生的总分按升序序排序并显示出来;(5):可以按“学号”、“姓名”查询该生的有关信息。总体设计:
总结感想开发一个编译器是一个比较漫长的过程。需要我对每一个模块都深思熟虑,每一个算法都充分理解,每一个数据结构都人身设计。在整个完成课程设计的过程中,我们主要收获了以下的几点经验。1 要学会具体问题具体分析在着手开始编写代码的时候,我已经将教材还有龙书看过一遍了,但是在实际动手的时候,才发现并不是像书上说的那么清楚明白,C语言的特性与书上举例用的语言特性有许多不同,这时就不能生搬硬套书上的算法,要结合C语言的特点,采用书上的思想,这样才能把问题解决。2 设计数据结构的重要性在我编写代码的过程中,最常出现的现象就是反复修改数据结构,甚至在进行优化的时候还回过头去修改中间代码的数据结构。这就导致了我编写代码效率的降低,还有由于数据结构的反复修改,使得整个工程维护起来极其困难。这就说明数据结构的设计在整个设计阶段是十分重要的,没有一个设计良好的数据结构,代码编写阶段就不会顺利的进行。3 交流和沟通我们在开发初期遇到的很多问题都是通过与同学交流和沟通解决的。同学间无私、耐心的讲解不仅让整个课程设计进展顺利,也让我们每一个人都学到了很多。总的来说,这次编译课程设计对我来说真的是受益匪浅,通过这次实践,让我对书本上的知识有了深刻的理解,同时增强了自己的动手能力,更重要的是我学会了一系列处理问题的方法,有穷状态机,语法制导等技术都有非常广的应用范围,还有通过代码优化的学习还让我知道如何让我编写的代码运行效率更高,对我今后的实践工作奠定了基础。编译是一门将程序设计语言、数据结构、算法、计算机体系结构、软件工程等计算机知识紧密结合在一起的学科,它将对我今后的学习和工作产生巨大的帮助。? 注册 | 登录 | 博客首页 | 我的主页 | 帮助 小痞
复制地址 订阅 笑着那些低处的,自以为是着,笑着.我站在不远的前方,笑着那些后方的鼠目寸光着.我并不是自卑得笑了,我只是卑劣的笑着,我也不是自信的笑了,我为我的信仰笑着 首页 日志 个性档案
C语言课程设计总结报告
课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新月异,当今计算机应用在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握计算机开发技术是十分重要的。回顾起此次课程设计,至今我们仍感慨颇多,的确,自从拿到题目到完成整个编程,从理论到实践,在整整半个学期的日子里,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对一些前面学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体,指针……通过这次课程设计之后,我们把前面所学过的知识又重新温故了一遍。在设计中我们遇到了很多编程问题,最后在谢老师的辛勤指导下,我们慢慢的进入状态,我们做的是一个俄罗斯方块的设计,内容包括很多。运用的函数也是非常的复杂,我们一组有八个人,我们分工合作,首先我们一起完成了结构题,然后我们一人各负责一个函数程序的设计,经过几星期的努力,我们完成了大半个程序,但是总是有很多错误出现,有好多是些小问题,这都是我们粗心大意造成的,所以设计程序一定要仔细,不容一点的马虎。当然也有大问题,关于文件的操作,是我们最大的问题,不过,我们做好后,经过老师的讲解和改错,我们也懂得设计和运用了。同时,也让我知道了,合作的力量,如果是孤军奋战的话,我们也不能在规定时间内完成,最终达到游纫而解。同时在这次课程设计中让我们认识到做程序设计这项工作中我门要具备以下素质:很强的团队精神和协作能力和文档习惯。  良好的文档是正规研发流程中非常重要的环节,缺乏文档,一个软件系统就缺乏生命力,在未来的查错,升级以及模块的复用时就都会遇到极大的麻烦。  此外编程是一项高精度的工作所以我们要有规范化,标准化的代码编写习惯通过这次编程我们深深的感受到对代码的变量命名,代码内注释格式,甚至嵌套中行缩进的长度和函数间的空行数字都有明确规定,良好的编写习惯,不但有助于代码的移植和纠错,也有助于不同人员之间的协作。
我们还要有模块化思维能力  模块化思维就是编程任何一个功能模块或函数的时候,要多想一些,不要局限在完成当前任务的简单思路上,想想看该模块是否可以脱离这个系统存在,是否可以通过简单的修改参数的方式在其他系统和应用环境下直接引用,这样就能极大避免重复性的开发工作, 学习和总结  善于总结,也是学习能力的一种体现,每次完成一个编程任务,完成一段代码,都应当有目的的跟踪该程序的应用状况,随时总结,找到自己的不足,这样所编写的程序才能逐步提高,生活就是这样,汗水预示着结果也见证着收获。劳动是人类生存生活永恒不变的话题。通过实际动手做,我们才真正领略到“艰苦奋斗”这一词的真正含义,我们想说,编程确实有些辛苦,但苦中也有乐,在这个团队的任务中,一起的工作可以让我们有说有笑,相互帮助,配合默契。对我们而言,知识上的收获重要,精神上的丰收是可喜的。挫折是一份财富,经历是一份拥有。这次实际操作必将成为我们人生旅途上一个非常美好的回忆!同时,在谢老师的身上我们学得到很多实用的知识,在次我们表示感谢!同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢!
#include&stdio.h&#include &time.h&#include&conio.h& /*清屏*/#include &stdlib.h& /*显示目录*/#include&string.h& #define MAX 80 void input(); /*输入数据函数*/void sort();/*排序数据函数*/void sort1(); void sort2(); void sort3();
void display();/*显示数据函数*/ void display1();void insert(); /*插入数据函数*/void del(); /*删除数据函数*/void average(); /*平均值函数*/void find();/*查找数据函数*/void find1();void find2(); void save(); /*保存数据函数*/void read(); /*读出数据函数*/void del_file();
/*删除文件函数*/void modify(); /*修改文件函数*/int now_no=0; struct student {
char name[20];
char sex[4];
float score1;
float score2;
float score3;
}; struct student stu[MAX],*p; main()/*主函数*/ {
start: printf(&\n\n\n\t\t\t欢迎使用学生成绩管理系统\n&);
printf(&\n\n\n\n\n\n\t\t******************按任意键继续********************&);
ch=getch();
while(!ch);
system(&cls&);
/*一下为功能选择模块*/
printf(&\n\t\t\t\t1.录入学员信息\n\t\t\t\t2.显示学员总成绩信息\n\t\t\t\t3.对总成绩排序\n\t\t\t\t4.显示学员单科成绩排序\n\t\t\t\t5.添加学员信息\n\t\t\t\t6.删除学员信息\n\t\t\t\t7.修改学员信息\n\t\t\t\t8.查询学员信息\n\t\t\t\t9.从文件读入学员信息\n\t\t\t\t10.删除文件中学员信息\n\t\t\t\t11.保存学员信息\n\t\t\t\t12.退出\n&);
printf(&\t\t\t\t选择功能选项(输入所选功能前的数字):&);
fflush(stdin);
/*可用可不用,用于清除缓存防止下次用scanf输入是出现错误*/
scanf(&%d&,&as);
switch(as)
case 1:system(&cls&);
case 2:system(&cls&);
display();
case 3:system(&cls&);
case 4:system(&cls&);
display1();
case 5:system(&cls&);
case 6:system(&cls&);
case 7:system(&cls&);
case 8:system(&cls&);
case 9:system(&cls&);
case 10:system(&cls&);
del_file();
case 11:system(&cls&);
case 12:system(&exit&);
default:system(&cls&);
}while(1);/*while(1),1表示真,所以while(1)表示永远循环下去,一般在while(1)的循环体内都有break 或者return 跳出循环*/
/*至此功能选择结束*/ }
void input()/*原始数据录入模块*/ {
printf(&\t\t\t\t1.录入学员信息\n输入第%d个学员的信息\n&,i+1);
printf(&\n输入学生编号:&);
scanf(&%d&,&stu[i].no);
fflush(stdin);
printf(&\n输入学员姓名:&);
fflush(stdin);
gets(stu[i].name);
printf(&\n输入学员性别:&);
fflush(stdin);
gets(stu[i].sex);
printf(&\n输入学员成绩1:&);
scanf(&%f&,&stu[i].score1);
printf(&\n输入学员成绩2:&);
fflush(stdin);
scanf(&%f&,&stu[i].score2);
printf(&\n输入学员成绩3:&);
fflush(stdin);
scanf(&%f&,&stu[i].score3);
printf(&\n\n&);
printf(&是否继续输入?(Y/N)&);
fflush(stdin);
ch=getch();
system(&cls&);
while(ch!='n'&&ch!='N');
system(&cls&); } void sort()/*排序数据函数*/ {
average();
for(i=1;i&now_i++)
for(j=1;j&=now_no-i;j++)
if(stu[j-1].ave&stu[j].ave)
temp=stu[j];
stu[j]=stu[j-1];
printf(&排序以完成进入功能2可进行显示\n&);
system(&pause&);
system(&cls&);} void sort1()/*排序数据函数*/ {
for(i=1;i&now_i++)
for(j=1;j&=now_no-i;j++)
if(stu[j-1].score1&stu[j].score1)
temp=stu[j];
stu[j]=stu[j-1];
} } void sort2()/*排序数据函数*/ {
for(i=1;i&now_i++)
for(j=1;j&=now_no-i;j++)
if(stu[j-1].score2&stu[j].score2)
temp=stu[j];
stu[j]=stu[j-1];
} } void sort3()/*排序数据函数*/ {
for(i=1;i&now_i++)
for(j=1;j&=now_no-i;j++)
if(stu[j-1].score3&stu[j].score3)
temp=stu[j];
stu[j]=stu[j-1];
} }void display()/*显示数据函数*/ {
average();
printf(&\t\t\t班级学员信息列表\n&);
printf(&\t编号\t姓名\t性别\t成绩1\t成绩2\t成绩3\t平均值\n&);
for(i=0;i&now_no&&stu[i].name[0];i++)
printf(&\t%d\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n&,stu[i].no,stu[i].name,stu[i].sex,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].ave);
printf(&\t\t按任意键返回主菜单.&);
fflush(stdin);
as=getch();
while(!as);
system(&cls&); }void display1()/*显示数据函数*/{
printf(&\t\t\t班级学员score1成绩排序\n&);
printf(&\t编号\t姓名\t性别\t成绩1\n&);
for(i=0;i&now_no&&stu[i].name[0];i++)
printf(&\t%d\t%s\t%s\t%.2f\t\n&,stu[i].no,stu[i].name,stu[i].sex,stu[i].score1);
printf(&\t\t\t班级学员score2成绩排序\n&);
printf(&\t编号\t姓名\t性别\t成绩2\n&);
for(i=0;i&now_no&&stu[i].name[0];i++)
printf(&\t%d\t%s\t%s\t%.2f\t\n&,stu[i].no,stu[i].name,stu[i].sex,stu[i].score2);
printf(&\t\t\t班级学员score3成绩排序\n&);
printf(&\t编号\t姓名\t性别\t成绩3\n&);
for(i=0;i&now_no&&stu[i].name[0];i++)
printf(&\t%d\t%s\t%s\t%.2f\t\n&,stu[i].no,stu[i].name,stu[i].sex,stu[i].score3);
printf(&\t\t按任意键返回主菜单.&);
fflush(stdin);
as=getch();
while(!as);
system(&cls&); } void insert()/*插入数据函数*/ {
printf(&\n\t\t输入新插入学员队信息\n&);
printf(&\n输入学生编号:&);
scanf(&%d&,&stu[now_no].no);
fflush(stdin);
printf(&\n输入学员姓名:&);
fflush(stdin);
gets(stu[now_no].name);
printf(&\n输入学员性别:&);
fflush(stdin);
gets(stu[now_no].sex);
printf(&\n输入学员成绩1:&);
fflush(stdin);
scanf(&%f&,&stu[now_no].score1);
printf(&\n输入学员成绩2:&);
fflush(stdin);
scanf(&%f&,&stu[now_no].score2);
printf(&\n输入学员成绩3:&);
fflush(stdin);
scanf(&%f&,&stu[now_no].score3);
printf(&\n\n&);
now_no=now_no+1;
printf(&是否继续输入?(Y/N)&);
fflush(stdin);
ch=getch();
system(&cls&);
while(ch!='n'&&ch!='N'); } void del()/*删除数据函数*/ {
int inum,i;
printf(&输入要删除学员的编号:&);
fflush(stdin);
scanf(&%d&,&inum);
for(i=0;i&now_i++)
if(stu[i].no==inum)
if(i==now_no)now_no-=1;
stu[i]=stu[now_no-1];
now_no-=1;
system(&cls&); } void save()/*保存数据函数*/ {
char filepath[20];
printf(&输入要保存的文件路径:&);
fflush(stdin);
gets(filepath);
if((fp=fopen(filepath,&w&))==NULL)
printf(&\n保存失败!&);
for(i=0;i&now_i++)
stu[i].sum=stu[i].score1+stu[i].score2+stu[i].score3;
stu[i].ave=stu[i].sum/3;
fprintf(fp,&\t%d\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n&,stu[i].no,stu[i].name,stu[i].sex,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].ave);
fclose(fp);
printf(&学生信息已保存在%s中!\n&,filepath);
system(&pause&);
system(&cls&); } void find()/*查询函数*/ {
char str[20],
printf(&输入要查询的学生姓名:&);
fflush(stdin);
gets(str);
for(i=0;i&now_i++)
if(!strcmp(stu[i].name,str))
printf(&\t编号\t姓名\t性别\t成绩1\t成绩2\t成绩3\t平均值\n&);
printf(&\t%d\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n&,stu[i].no,stu[i].name,stu[i].sex,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].ave);
printf(&\t\t按任意键返回主菜单.&);
fflush(stdin);
as=getch();
while(!as);
system(&cls&); }
void average()/*求平均数*/ {
for(i=0;i&now_i++)
stu[i].sum=stu[i].score1+stu[i].score2+stu[i].score3;
stu[i].ave=stu[i].sum/3;
} } void modify()/*修改数据函数*/ {
char str[20];
printf(&输入要修改的学生姓名:&);
fflush(stdin);
gets(str);
for(i=0;i&now_i++)
if(!strcmp(stu[i].name,str))
system(&cls&);
printf(&\n\t\t输入新插入学员队信息\n&);
printf(&\n输入学生编号:&);
fflush(stdin);
scanf(&%d&,&stu[i].no);
printf(&\n输入学员性别:&);
fflush(stdin);
gets(stu[i].sex);
printf(&\n输入学员成绩1:&);
fflush(stdin);
scanf(&%f&,&stu[i].score1);
printf(&\n输入学员成绩2:&);
fflush(stdin);
scanf(&%f&,&stu[i].score2);
printf(&\n输入学员成绩3:&);
fflush(stdin);
scanf(&%f&,&stu[i].score3);
printf(&\n\n&);
system(&cls&); }
void read() {
char filepath[20];
printf(&输入要读入的文件路径:&);
fflush(stdin);
gets(filepath);
if((fp=fopen(filepath,&r&))==NULL)
printf(&找不到%s文件!\n&,filepath);
system(&pause&);
for(i=0;i&MAX&&!feof(fp);i++)
fscanf(fp,&\t%d\t%s\t%s\t%f\t%f\t%f\t%f\n&,&stu[i].no,stu[i].name,stu[i].sex,&stu[i].score1,&stu[i].score2,&stu[i].score3,&stu[i].ave);
fclose(fp);
printf(&保存的在文件%s中的所有信息已经读入!\n&,filepath);
system(&pause&); /*按任意键继续*/
system(&cls&); }
void del_file() {
char filepath[20];
printf(&输入要删除的文件路径:&);
fflush(stdin);
gets(filepath);
fp=fopen(filepath,&w&);
fclose(fp);
printf(&保存的在文件%s中的所有信息已经删除!\n&,filepath);
system(&pause&);
system(&cls&); }
请登录后再发表评论!
你程序不是写的很明白了吗,不用问
请登录后再发表评论!
世界级大师的SQL编程规范,讲述如何编写标准、高效、易于维护的SQL代码,教你像优秀的SQL程序员那样思考。  数据库作为现代软件应用的核心之一,正在发挥越来越重要的作用。很自然地,SQL在广大程序员的日常工作中也成了不可或缺的技术。学会SQL并不难,但是要成为优秀的SQL程序员就绝非易事了。大部分程序员都是在学习并从事了过程化或面向对象编程之后才转到SQL。因此往往带有浓重的口音,而且常常缺乏自知之明。  本书中,世界级SQL专家Joe Celko针对数据库的设计与编程提出了一系列规则和建议,内容涵盖命名规范、代码版式、键的设计、数据编码方案、编码风格、SQL中的思考方式等多个方面。可以作为软件公司内部编程规范的基础。书中讲述了如何编写标准、高效、易于维护的SQL代码。更重要的是。还教授读者如何像优秀的SQL程序员那样思考,用查询的思维方式来理解数据库,从而大大改善SQL编程风格并提高SQL编程水平。[编辑本段]内容简介  本书针对数据库的设计与编程提出了一系列规则和建议,内容涵盖命名规范、代码版式、键的设计、数据编码方案、编码风格、视图和存储过程的使用以及SQL 中的思考方式和一些试探法等多方面。这些规则都给出了原理说明和例外情况,并列举了大量示例。通过阅读本书,读者可以加深对SQL 思维方式的理解,改善SQL 编程风格,并编写出可读性强、可移植且易于维护的SQL 代码。此外,书中的规则对于公司内部制定编程规范也具有很好的借鉴作用。  本书适合数据库管理人员和开发人员阅读,也可作为高等院校计算机专业师生的参考教材。[编辑本段]作者简介  Joe Celko世界著名的数据库专家,曾经担任ANSI SQL标准委员会成员达10年之久,他也是世界上读者数量最多的SOL图书作者之一。他曾撰写过一系列专栏,并通过他的新闻组支持了数据库编程技术以及 ANSI/ISO标准的发展。除本书外,他还撰写了多部SQL经典著作,包括《SQL解惑(第2版)》(人民邮电出版社,2008)和《SOL权威指南》(即将由人民邮电出版社出版)。[编辑本段]图书目录  第1章 名称与数据元素   1.1 名称   1.1.1 注意名称长度   1.1.2 在名称中避免使用所有特殊字符   1.1.3 避免使用引号分隔标识符   1.1.4 实施大写规则以避免大小写区分问题   1.2 遵循ISO-11179标准命名规范   1.2.1 SQL的ISO-11179   1.2.2 抽象级别   1.2.3 避免使用描述性前缀   1.2.4 制定标准化的后缀   1.2.5 表和视图名称应当是遵循业界标准的、集合、类或复数名称   1.2.6 相关名基本上也要遵循与其他名称相同的命名规则   1.2.7 关系表名应当是常用描述术语   1.2.8 元数据模式访问对象的名称可以包含结构信息   1.3 命名数据元素时遇到的问题   1.3.1 避免模糊名称   1.3.2 避免名称在不同的地方改变   1.3.3 不要使用专有暴露的物理定位符   第2章 字体、标点和间距   2.1 版式与代码   2.1.1 名称中只使用大小写字母、数字和下划线   2.1.2 列名、参数和变量等标量小写   2.1.3 模式对象名首字母大写   2.1.4 保留字大写   2.1.5 避免使用驼峰命名法   2.2 单词间距   2.3 遵循规范标点规则   2.4 使用完全保留字   2.5 如果在使用的SQL产品中有标准保留字,就不要使用专有保留字   2.6 如果有标准语句,就不要使用专有语句   2.7 疏排版面的隔空白道和垂直间距   2.8 缩进   2.9 使用行间距将语句分组   第3章 数据定义语言   3.1 将默认值放到合适的地方   3.2 默认值的类型应当与列的类型相同   3.3 不要使用专有数据类型   3.4 将PRIMARY KEY声明放在CREATE TABLE语句的开头   3.5 将列按照逻辑顺序排列并按照逻辑组聚合   3.6 将参考约束和操作在数据类型下面缩进   3.7 在产品代码中为约束命名   3.8 将CHECK()约束放在所检查的内容附近   3.8.1 对数值考虑使用范围约束   3.8.2 对于字符值考虑使用LIKE和SIMILAR TO约束   3.8.3 时间值是有长短的   3.8.4 避免使用REAL和FLOAT数据类型   3.9 将多列约束尽可能靠近这些列   3.10 将表级别的CHECK()约束放到表声明的最后   3.11 对多表约束使用CREATE ASSERTION   3.12 使CHECK()约束的目的唯一   3.13 每个表都必须有键才能称为表   3.13.1 自动编号不是关系型键   3.13.2 文件不是表   3.13.3 键的属性   3.14 不要分割属性   3.14.1 分割为多个表   3.14.2 分割为多个列   3.14.3 分割为多个行   3.15 不要对RDBMS使用面向对象的设计   3.15.1 表不是对象实例   3.15.2 对RDBMS不要使用EAV设计   第4章 尺度与测量   4.1 测度论   4.1.1 范围与颗粒度   4.1.2 范围   4.1.3 颗粒度、准确度和精度   4.2 尺度类型   4.2.1 名义尺度   4.2.2 种类尺度   4.2.3 绝对尺度   4.2.4 顺序尺度   4.2.5 级别尺度   4.2.6 间距尺度   4.2.7 比例尺度   4.3 使用尺度   4.4 尺度转换   4.5 导出单位   4.6 标点与标准单位   4.7 在数据库中使用尺度的一般准则   第5章 数据编码方案   5.1 不好的编码方案   5.2 编码方案类型   5.2.1 枚举编码   5.2.2 测量编码   5.2.3 缩写编码   5.2.4 算法编码   5.2.5 层次编码   5.2.6 向量编码   5.2.7 拼接编码   5.3 设计编码方案的一般准则   5.3.1 现有的编码标准   5.3.2 允许扩展   5.3.3 使用显式的丢失值避免NULL   5.3.4 为终端用户转换编码   5.3.5 在数据库中保存编码   5.4 多字符集   第6章 编码选择   6.1 选择标准构造,不要选择专有构造   6.1.1 使用标准OUTER JOIN语法   6.1.2 中缀INNER JOIN和CORSS JOIN语法是可选的,但是很好用   6.1.3 使用ISO时间语法   6.1.4 使用标准和可移植的函数   6.2 选择紧凑格式,不要选择松散格式   6.2.1 避免使用多余的括号   6.2.2 使用CASE系列表达式   6.2.3 避免使用冗余表达式   6.2.4 寻找紧凑格式   6.3 使用注释   6.3.1 存储过程   6.3.2 控制语句注释   6.3.3 对子句的注释   6.4 避免优化器提示   6.5 触发器的优先级不应当高于DRI操作   6.6 使用SQL存储过程   6.7 避免在数据库中使用用户定义函数和扩展   6.7.1 多语言问题   6.7.2 可移植性问题   6.7.3 优化问题   6.8 避免使用过度的辅助索引   6.9 避免使用关联子查询   6.10 避免使用UNION   6.11 测试SQL   6.11.1 测试NULL所有可能的组合   6.11.2 检查并测试所有的CHECK()约束   6.11.3 注意字符列   6.11.4 测试大小   第7章 如何使用视图   7.1 视图的命名规范与表一样   7.2 视图提供行和列级别的安全性   7.3 视图确保了有效访问路径   7.4 视图对用户隐藏了复杂性   7.5 视图确保了正确的数据派生   7.6 视图将表和/或列重新命名   7.7 视图实施复杂的完整性约束   7.8 可更新的视图   7.8.1 WITH CHECK OPTION子句   7.8.2 INSTEAD OF触发器   7.9 每个视图都要有创建的原因   7.10 避免视图的数量快速增长   7.11 将视图与基表同步   7.12 不恰当地使用视图   7.12.1 用于域支持的视图   7.12.2 单个解决方案的视图   7.12.3 不要为每个基表都创建视图   7.13 学习使用物化的视图   第8章 如何编写存储过程   8.1 大多数SQL 4GL都不是用于应用程序的   8.2 基本软件工程   8.2.1 内聚   8.2.2 耦合   8.3 使用传统的结构化编程   8.4 避免可移植性问题   8.4.1 避免创建临时表   8.4.2 避免使用游标   8.4.3 面向集合的构造优于过程化代码   8.5 标量与结构化参数的对比   8.6 避免使用动态SQL   8.6.1 性能   8.6.2 SQL注入   第9章 试探法   9.1 将规格说明表达为清晰的语句   9.2 在名词的后面加上“……的集合”   9.3 从问题语句中删除行为动词   9.4 仍然可以使用存根   9.5 不要担心数据的显示   9.6 第一次尝试需要特别处理   9.6.1 不要舍不得扔掉你对DDL的第一次尝试   9.6.2 保存你对DML的第一次尝试   9.7 不要以方框和箭头的方式思考   9.8 画圆圈和集合图   9.9 学习方言   9.10 假设WHERE子句是“巨型变形虫”   9.11 使用新闻组和因特网   第10章 以SQL的方式思考   10.1 不好的SQL编程方式与过程化语言   10.2 把列当作字段思考   10.3 以过程化而不是说明性的方式思考   10.4 模式应该看起来像输入格式   附录A 资源   附录B 参考文献   索引[编辑本段]媒体评论  “Joe Celko是当今数据库界最著名的代表之一,他已经写了不少SQL编程的畅销书。但是。本书非常与众不同,它将教你如何转变思维方式,以逻辑和说明性的方式编程。成为一流的SQL开发人员。”  ——sQL-Server-Performance.corn[编辑本段]书摘插图  第1章 名称与数据元素  1.1 名称  以前,每个程序员都有一套自己的命名规范。但是,他们常常都太有创造性了。我特别喜欢举的一个例子是,有一个人使用某类主题词作为他的COBOL段名:一段程序可能使用国家名,另外一段可能使用花卉,等等。即使就程序员而言,这显然也是很奇怪的行为,但是很多程序员的个人命名系统只有他们自己明白,别人都无法理解。  例如,我使用的第一个FORTRAN版本只允许6个字母的名称,所以我变得善于使用和发明6个字母的名称。开始编程时使用弱类型或无类型语言的程序员们都喜欢使用匈牙利表示法(参见Leszynski和Reddick)。老的习惯很难放弃。  当软件工程变成规范后,每个公司都制定了自己的命名规范,并使用某种数据字典实施这些规范。使用最广泛的一套规则可能要算是由美国国防部建立的MIL STD8320.1,但它在联邦政府之外却从未流行起来。这与先前缺乏有效组织的体系相比,已经有了很大进步,但是每个公司都有很大的不同:有些对于名称构造有正式的规则,而另外一些则只是将赋予数据元素的第一个名称登记一下。  现在,我们有了ISO-11179标准,它正变得越来越普遍,是某些政府工作所需要的,并且正在被放入到数据储存库产品中。一些工具和大量标准化编码方案也被放入到了这个标准中。考虑到这一点,并考虑到XML是一种标准交换格式,ISO- 11179在今后将成为元数据参考的方法。
请登录后再发表评论!}

我要回帖

更多关于 c语言视频教程 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信