您的位置:首页 > 数据库

解决用ADODB对Access数据库进行操作的一个问题

2006-04-26 16:00 489 查看
问题:[microsoft][odbc microsoft access driver]标准表达式中数据类型不匹配
原因:Sql语句书写格式不标准
解决办法:
如: string sqlstr="select * from student where studentId>='" + Convert.ToInt32(this.textBox1.Text)+"'";
应改为:string sqlstr="select * from student where studentId>=" + Convert.ToInt32(this.textBox1.Text);

private void button1_Click(object sender, System.EventArgs e)
Public Function DataTransition_ADODBCon() As ADODB.Connection
Dim conn As New ADODB.Connection()
Try
ReadIniFile()
conn.ConnectionString = "Provider=SQLOLEDB;Data Source='" & Trim(SqlServerName_Str_Pub) & " ';Initial Catalog='" & Trim(SqlInitDB_Str_Pub) & "';Integrated Security=SSPI;" & " ," & " '" & Trim(SqlUserName_Str_Pub) & "' " & " , " & " '" & Trim(SqlUserPassWord_Str_Pub) & "'" & ", " & " -1"
Catch
MsgBox(" MyOleConStr 错误号: " & Err.Number.ToString & " 错误描述 : " & Err.Description.ToString)
End Try
DataTransition_ADODBCon = conn
End Function

Public Function SqlConStr() As String
Dim sqlconstring As String = ""
Try
ReadIniFile()

sqlconstring = "data source=" & Trim(SqlServerName_Str_Pub) & "; initial catalog=" & Trim(SqlInitDB_Str_Pub) & "; persist security info=true; user id=" & Trim(SqlUserName_Str_Pub) & "; Password=" & Trim(SqlUserPassWord_Str_Pub) & "; workstation id=" & Trim(SqlServerName_Str_Pub) & "; packet size=4096"
Catch
MsgBox("错误号: " & Err.Number.ToString & " 错误描述 : " & Err.Description.ToString)
End Try
Return sqlconstring
End Function

Public Function SqlConStr2() As String
Dim sqlconstring As String = ""
Try
ReadIniFile()

sqlconstring = Trim(SqlServerName_Str_Pub) & "\" & Trim(SqlInitDB_Str_Pub) & "\" & Trim(SqlUserName_Str_Pub) & "\" & Trim(SqlUserPassWord_Str_Pub)
Catch
MsgBox("SqlConStr 错误号: " & Err.Number.ToString & " 错误描述 : " & Err.Description.ToString)
End Try
Return sqlconstring
End Function

'*************************************************************************************************************************************************'
'1.2.连接ACCESS数据库
'*************************************************************************************************************************************************'
Public Function Access_OleDBCon(ByVal DBPath As String) As OleDbConnection
Dim OleCon As OleDbConnection = New OleDbConnection()
'Dim DBPath As String = "d:\mrfu\DriverManager.mdb"
OleCon.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source='" & DBPath & "'"
Return OleCon

End Function

'*************************************************************************************************************************************************'
'对ACCESS数据库进行操作
'*************************************************************************************************************************************************'

Public Function Access_ADODBConNeedPassword(ByVal DBPathAndDatabaseName As String, ByVal UserID As String, ByVal Password As String, ByVal SqlStr As String) As String

Dim FlagStr As String = "0"
Dim ConnectionString As String = ""

ConnectionString = "DRIVER={Microsoft Access Driver (*.mdb)};" & _
"DBQ=" & DBPathAndDatabaseName & ";DefaultDir=;" & _
"UID=" & UserID & ";" & _
"PWD=" & Password & ";"
Dim Adocon As ADODB.Connection
Try

Adocon = New ADODB.Connection

Adocon.ConnectionString = ConnectionString
Adocon.ConnectionTimeout = 120
Adocon.CommandTimeout = 160
Adocon.Open()

Adocon.Execute(SqlStr)

Adocon.Close()

Adocon = Nothing
FlagStr = "1"

Catch
If Adocon.State = ConnectionState.Open Then
Adocon.Close()
End If
FlagStr = "0"
MsgBox(Err.Description.ToString, MsgBoxStyle.Exclamation, "错误提示")

End Try

Return FlagStr

End Function

'*************************************************************************************************************************************************'
'访问ACCESS数据库,并返回小批量数据
'*************************************************************************************************************************************************'
Public Function Access_GetDataReturnArrayList(ByVal DBPathAndDatabaseName As String, ByVal UserID As String, ByVal Password As String, ByVal SqlStr As String, ByVal TableName As String, ByVal FiledsName As String) As ArrayList

Dim TempArrayList As ArrayList
TempArrayList = Nothing
Dim rs As ADODB.Recordset
Dim ConnectionString As String = ""
ConnectionString = "DRIVER={Microsoft Access Driver (*.mdb)};" & _
"DBQ=" & DBPathAndDatabaseName & ";DefaultDir=;" & _
"UID=" & UserID & ";" & _
"PWD=" & Password & ";"
Dim Adocon As ADODB.Connection
Try
Adocon = New ADODB.Connection
Adocon.ConnectionString = ConnectionString
Adocon.ConnectionTimeout = 120
Adocon.CommandTimeout = 160
Adocon.Open()
rs = New ADODB.Recordset
rs.Open(SqlStr, Adocon, ADODB.CursorTypeEnum.adOpenKeyset, ADODB.LockTypeEnum.adLockOptimistic, CInt(ADODB.CommandTypeEnum.adCmdText))

TempArrayList = New ArrayList

'如果记录集为空,输出一个错误信息
If (rs.BOF Or rs.EOF) Then
Adocon.Close()
Adocon = Nothing
rs = Nothing

MsgBox("没有找到任何记录,请检查你的" & TableName & " 表 ", MsgBoxStyle.Information, "系统消息")

Return TempArrayList
End If
'循环存入数据

While (Not rs.EOF)
TempArrayList.Add(rs.Fields(FiledsName).Value.ToString())

rs.MoveNext()

End While
Adocon.Close()

Adocon = Nothing
rs = Nothing

Catch
If Adocon.State = ConnectionState.Open Then
Adocon.Close()
End If

MsgBox(Err.Description.ToString, MsgBoxStyle.Exclamation, "错误提示")

End Try

Return TempArrayList

End Function

'*************************************************************************************************************************************************'
'访问ACCESS数据库,并返回数据集
'*************************************************************************************************************************************************'
Public Function GetDataFromAccess(ByVal DBPathAndDatabaseName As String, ByVal UserID As String, ByVal Password As String, ByVal SqlStr As String, ByVal TableName As String) As DataSet
Dim custDA As OleDbDataAdapter = New OleDbDataAdapter
Dim custDS As DataSet = New DataSet

Dim rs As ADODB.Recordset
Dim ConnectionString As String = ""
ConnectionString = "DRIVER={Microsoft Access Driver (*.mdb)};" & _
"DBQ=" & DBPathAndDatabaseName & ";DefaultDir=;" & _
"UID=" & UserID & ";" & _
"PWD=" & Password & ";"
Dim Adocon As ADODB.Connection
Try
Adocon = New ADODB.Connection
Adocon.ConnectionString = ConnectionString
Adocon.ConnectionTimeout = 120
Adocon.CommandTimeout = 160
Adocon.Open()
rs = New ADODB.Recordset
rs.Open(SqlStr, Adocon, ADODB.CursorTypeEnum.adOpenKeyset, ADODB.LockTypeEnum.adLockOptimistic, CInt(ADODB.CommandTypeEnum.adCmdText))

'如果记录集为空,输出一个错误信息
If (rs.BOF Or rs.EOF) Then
Adocon.Close()
Adocon = Nothing
rs = Nothing

MsgBox("没有找到任何记录,请检查你的" & TableName & " 表 ", MsgBoxStyle.Information, "系统消息")

Return custDS
End If
'存入dataset数据

custDA.Fill(custDS, rs, "Customers")
Adocon.Close()
Adocon = Nothing
rs = Nothing

Catch
If Adocon.State = ConnectionState.Open Then
Adocon.Close()
End If

MsgBox(Err.Description.ToString, MsgBoxStyle.Exclamation, "错误提示")

End Try

Return custDS

End Function
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐